电赛学习笔记(5)——PID控制算法理解

一.简要回顾PID

*代码:

//**********pid.h**********
#ifndef _PID_H
#define _PID_H
#include "public.h"

#define PID_REALIZE	0	//位置式PID
#define PID_INCREASE 1	//增量式PID

int Pid_Control(float kp,float ki,float kd,int Target_Num,int Current_Num,int PID_Mode);

#endif



​ //pid.c
​ #include “pid.h”

//速度环控制
int Pid_Control(float kp,float ki,float kd,int Target_Num,int Current_Num,int PID_Mode)
{
int Pid_Num=0; //返回的控制值

static float Error_k=0;
static float Error_k1=0;
static float Error_k2=0;

Error_k=Target_Num-Current_Num;
Error_k1=Error_k-Error_k1;

if(PID_Mode==PID_INCREASE)
{
Error_k2=Error_k-2Error_k1+Error_k2;
Pid_Num=kp
Error_k+kiError_k2+kdError_k1;
}

else if(PID_Mode==PID_REALIZE)
{
Pid_Num=kpError_k+kdError_k1;
}

	Error_k2=Error_k1;
	Error_k1=Error_k;

	return Pid_Num;
}

*所需参数:KP/KI/KD/当前值Curr_Num

*返回值:Pid_Num(根据实际情境确定其物理意义,比如可以是增量:如控制电机转速,Pid_Num为增量,可代表增加的电压值等;也可以是直接确定值:如控制小车行进距离,Pid_Num代表当前小车速度)

*位置式PID和增量式PID区别:位置式PID与增量式PID区别浅析

二.PID参数意义

评估指标:最大超调量、上升时间、静差(稳定、准确、快速)

PID三参数:P用于提高响应速度,I减小静差、D减小静差

在实践生产工程中,不同的控制系统对控制器效果的要求不一样。比如平衡车、倒立摆对系统的快速性要求很高,响应太慢会导致系统失控。智能家居里面的门窗自动开合系统,对快速性要求就不高,但是对稳定性和准确性的要求就很高,所以需要严格控制系统的超调量和静差。

所以PID参数在不同的控制系统中是不一样的。只要我们理解了每个PID参数的作用,我们就可以应对工程中的各种项目的PID参数整定了。

位置控制的调节经验可以总结为:先只使用P控制,增大P系数至系统震荡之后加入微分控制以增大阻尼,消除震荡之后再根据系统对响应和静差等的具体要求,调节P 和
I 参数。

一般而言,一个控制系统的控制难度,一般取决于系统的转动惯量和对响应的速度要求等。转动惯量越小、对响应速度要求越低, PID参数就越不敏感。

本文转自 https://blog.csdn.net/qq_32971095/article/details/131927399,如有侵权,请联系删除。

> --------------- THE END -------------- <