- 5
- 0
- 约7.49千字
- 约 18页
- 2021-09-26 发布于山东
- 举报
PID控制算法介绍与实现
PID控制算法介绍与实现
PAGE / NUMPAGES
PID控制算法介绍与实现
PID 控制算法介绍与实现
一、 PID 的数学模型
在工业应用中 PID 及其衍生算法是应用最广泛的算法之一, 是当之无愧的万
能算法,如果能够熟练掌握 PID 算法的设计与实现过程,对于一般的研发人员来
讲,应该是足够应对一般研发问题了,而难能可贵的是,在很多控制算法当中,
PID 控制算法又是最简单,最能体现反馈思想的控制算法,可谓经典中的经典。
经典的未必是复杂的,经典的东西常常是简单的,而且是最简单的。 PID 算法的
一般形式:
PID 算法通过误差信号控制被控量,而控制器本身就是比例、积分、微分三个环节的加和。这里我们规定(在 t 时刻):
输入量为 ??( ??)
输出量为 ??( ??)
3. 偏差量为 ??????(??) = ??( ??) - ??(??)
??( )=
????(??????(
??
) +
1
.∫??????(
) ???? + ????????????(??)
)
??
????
??
????
二、 PID 算法的数字离散化
假设采样间隔为 T,则在第 K个 T 时刻:
偏差??????(??) =??( ??) - ??( ??)
积分环节用加和的形式表示,即 ??????(??) + ??????( ??+ 1) +
微分环节用斜率的形式表示,即 [ ??????(??) - ??????( ??- 1) ]/T;
PID 算法离散化后的式子:
??
= ????( ??????( ) +
?? . ∑ ??????(
??
) +
???? (??????( ) - ??????
??- 1)
))
(??)
??
????
??
??
(
则??( ??) 可表示成为:
??(??) = ????(??????(??) + ???? ∑ ??????(??) + ????( ??????(??) - ??????(??- 1)))
其中式中:
比例参数 ????:控制器的输出与输入偏差值成比例关系。系统一旦出现偏差,比
例调节立即产生调节作用以减少偏差。特点:过程简单快速、比例作用大,可以
加快调节,减小误差;但是使系统稳定性下降,造成不稳定,有余差。
积分参数 ????:积分环节主要是用来消除静差,所谓静差,就是系统稳定后输出
值和设定值之间的差值,积分环节实际上就是偏差累计的过程,把累计的误差加
到原有系统上以抵消系统造成的静差。
微分参数 ????:微分信号则反应了偏差信号的变化规律,或者说是变化趋势,根
据偏差信号的变化趋势来进行超前调节,从而增加了系统的快速性。
PID 的基本离散表示形式如上。目前的这种表述形式属于位置型 PID,另外
一种表述方式为增量式 PID,由上述表达式可以轻易得到:
??( ??- 1) = ????( ??????(??- 1) + ???? ∑ ??????(??) + ????(??????(??- 1)
??????(??- 2) ))
那么:
??(??) = ????( ??????(??) - ??????(??- 1) ) + ??????????(??) + ????( ??????(??)
2??????(??- 1) + ??????(??- 2) )
上式就是离散化 PID 的增量式表示方式,由公式可以看出,增量式的表达结
果和最近三次的偏差有关,这样就大大提高了系统的稳定性。需要注意的是最终
的输出结果应该为:
输出量 = ??( ??) + 增量调节值
三、 PID 的 C语言实现
位置式 PID 的 C语言实现
上边已经抽象出了位置性 PID 和增量型 PID 的数学表达式, 这里重点讲解 C语言
代码的实现过程。
第一步:定义 PID 变量结构体,代码如下:
struct t_pid{
float SetSpeed;
上一节中介绍了最简单的位置型
量型 PID 的 C 语言实现
PID 的实现手段,这一节讲解增量式
PID 的
实现方法。
#include
#include
struct t_pid{
float SetSpeed; 分分离的 PID 控制算法
在普通 PID 控制中,引入积分环节的目的,主要是为了消除静差,提高控制
精度。但是在启动、结束或大幅度增减设定时, 短时间内系统输出有很大的偏差,
会造成 PID 运算的积分积累, 导致控制量超过执行机构可能允许的最大动作范围对应极限控制量,从而引起较大的超调,甚至是震荡,这是绝对不允许的。
为了克服这一问题,引入了积分分离的概念,其基本思路是 当被控量与设定值偏差较大时,取消积分作用 ;
原创力文档

文档评论(0)