一.简要回顾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=kpError_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,如有侵权,请联系删除。