PID算法理论与电机控速的设计

  • 格式:pdf
  • 大小:1.80 MB
  • 文档页数:10

使系统的动作缓慢。

Kp可以选负数,这主要是由执行机构、传感器以控制对象
的特性决定的。

如果Kp的符号选择不当对象状态(pv值)就会离控制目标的状态(sv值)越来越远,如果出现这样的情况Kp的符号就一定要取反。

(2) 积分控制Ti对系统性能的影响
积分作用使系统的稳定性下降,Ti小(积分作用强)会使系统不稳定,但
能消除稳态误差,提高系统的控制精度。

(3) 微分控制Td对系统性能的影响
微分作用可以改善动态特性,Td偏大时,超调量较大,调节时间较短。

Td
偏小时,超调量也较大,调节时间也较长。

只有Td合适,才能使超调量较小,
减短调节时间。

PID参数的整定必须考虑在不同时刻三个参数的作用以及相互之间的互联关系。

这几个参数在我们实际做车子上有着很重要的作用,相关的参数对车子的速度,各个硬件最适合的运行速度也不同,不同的速度也会影响到车子的发挥,驱动电机在这一方面的要求很高,所以如果我们设计出符合我们要求的PID调试装置,就可以快速有效地解决这一系列的问题。

2、图形化调试
图形化串口上位机其实就是虚拟示波器,它主要由P C机,应用软件,数据采集系统三个部分组成,如下图所示,P C机主要是用户的工作界面,接受用户指令并以数据或图形方式向用户输出结果;应用软件是虚拟示波器的核心,它在P C机与数据采集系统之间建立了连接,控制数据采集系统对被测模拟量的测量,对采集到的数据进行存储,处理,分析,回放等,数据采集系统是虚拟示波器的数据来源,主要完成现场信号的采集,其关键是要达到高速度,高精度的要求。

另外,在P C机与数据采集系统之间还要设计通信接口。

本文设计的实物示波器是基于MA T LAB平台上完成的。

实物示波器接入的模拟信号,而本设计的虚拟示波器是下位机通过无线串口蓝牙,传到上位机的蓝牙接口,将串口协议中传输过来的数据,通过上位机读取并显示出来。

正常操作是,点击RUN按钮,打开串口接收功能,软件将从串口接收到的
2
数据实时图形化显示。

下位机只要按照如下格式通过串口向上发送数据,上位机即可将接受到的数据显示成为波形。

当下位机持续向上位机放送满足要求的数据时,软件则会将收到的数据显示为如下曲线。

3、图形可视化参数整定
PID 整定口诀:
参数整定找最佳, 从小到大顺序查。

先是比例后积分, 最后再把微分加。

曲线振荡很频繁, 比例度盘要放大。

曲线漂浮绕大弯, 比例度盘往小扳。

曲线偏离回复慢, 积分时间往下降。

曲线波动周期长, 积分时间再加长。

曲线振荡频率快, 先把微分降下来。

动差大来波动慢, 微分时间应加长。

理想曲线两个波, 前高后低四比一。

一看二调多分析, 调节质量不会低。

整定口诀对于初学者来说,其实根本就看不懂,只有从实际整定过程中才能慢慢发觉其中的奥秘。

3
首先整定的是Kp比例项;
Kp =0.1 Kp =0.5
Kp = 1 Kp = 1.5
Kp = 2 Kp =5
红色线:设定速度
黄色线:实际速度
由图形化的上位机可以清晰看到,Kp =0.1时,根本达不到设定的速度;Kp =0.5和1.0时,也偏小,响应速度不够快;Kp = 2.0和5.0时,则偏大,会导致振荡,延长了达到稳定的时间。

所以Kp选择1.5较为合适。

4
然后加入Ki积分项;
Kp = 1.5 , Ki =0.01
Ki =0.1
5
Ki =0.3
由图可以看出Ki项不能加的太大,不然将会引起波形抖动。

所以选择Ki为0.01。

6
最后加入Kd微分项;
Kp = 1.5
Ki =0.01
Kd =5
Kd = 20
7
Kd = 30
Kd =50
有图可知,Kd项的引入可以消除波形的抖动,但如果太大会降低系统的相应速度。

最后得到最合适的参数:Kp = 1.5,Ki =0.01,Kd = 30
8
4、PID算法C语言原代码
typedef struct PID
{
intSetPoint; //设定目标 DesiredValue
longSumError; //误差累计
doubleProportion; //比例常数Proportional Const
doubleIntegral; //积分常数 IntegralConst
doubleDerivative; //微分常数Derivative Const
intLastError; //Error[-1]
intPrevError; //Error[-2]
} PID;
static PID sPID;
static PID *sptr = &sPID;
/
*============================================================= =======
InitializePID Structure PID参数初始化
============================================================= ======*/
void IncPIDInit(void)
{
sptr->SumError= 0;
sptr->LastError= 0; //Error[-1]
sptr->PrevError= 0; //Error[-2]
sptr->Proportion= 0; //比例常数Proportional Const
sptr->Integral= 0; //积分常数IntegralConst
sptr->Derivative= 0; //微分常数Derivative Const
sptr->SetPoint= 0;
}
9
/
*============================================================= ======= 增量式PID计算部分
============================================================= =======*/
int IncPIDCalc(int NextPoint)
{
registerint iError, iIncpid; //当前误差
iError= sptr->SetPoint - NextPoint; //增量计算
iIncpid= sptr->Proportion * iError //E[k]项
-sptr->Integral * sptr->LastError //E[k
1]项
+sptr->Derivative * sptr->PrevError; //E[k
2]项
//存储误差,用于下次计算
sptr->PrevError= sptr->LastError;
sptr->LastError= iError;
//返回增量值
return(iIncpid);
}
5、总结
调试装置的设计会遇到各种各样的问题,硬件随外界环境会不断的出现变化,会干扰我们的调试以及运行结果。

整定出能适应各种环境的参数,必须对每个环境都加以测试,综合得出最合适的参数。

好在图形化的调试整定过程能够快速直观的得出结论。

10。