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-2*Error_k1+Error_k2;
		Pid_Num=kp*Error_k+ki*Error_k2+kd*Error_k1;
	}
	
	else if(PID_Mode==PID_REALIZE)
	{
		Pid_Num=kp*Error_k+kd*Error_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参数就越不敏感。

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

switch_swq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值