[控制理论]—位置式PID与增量式PID

devtools/2024/11/20 9:04:25/

位置式PID与增量式PID

1.位置式PID

按模拟PID控制算法,以一系列的采样时刻点kT代表连续时间t,以矩形法数值积分近似代替积分,以一阶后向差分近似代替微分,即:
t ≈ k T ( k = 0 , 1 , 2... ) ∫ o t e r r o r ( t ) d t ≈ T ∑ j = 0 k e r r o r ( j T ) ≈ T ∑ j = 0 k e r r o r ( j ) d e r r o r ( t ) d t ≈ e r r o r ( k T ) − e r r o r ( ( k − 1 ) T ) T = e r r o r ( k ) − e r r o r ( k − 1 ) T t≈kT (k=0,1,2...) \\ \int_o^terror(t)dt ≈T\sum_{j=0}^kerror(jT)≈T\sum_{j=0}^kerror(j) \\ \frac{\mathrm{d}error(t)}{\mathrm{d}t}≈\frac{error(kT)-error((k-1)T)}{T}=\frac{error(k)-error(k-1)}{T} tkTk=0,1,2...oterror(t)dtTj=0kerror(jT)Tj=0kerror(j)dtderror(t)Terror(kT)error((k1)T)=Terror(k)error(k1)
可得离散PID表达式:
u ( k ) = k p ( e r r o r ( k ) + T T I ∑ j = 0 k e r r o r ( j ) + T D T ( e r r o r ( k ) − e r r o r ( k − 1 ) ) ) u ( k ) = k p e r r o r ( k ) + k i ∑ j = 0 k e r r o r ( j ) T + k d e r r o r ( k ) − e r r o r ( k − 1 ) T u(k)=k_p(error(k)+\frac{T}{T_I}\sum_{j=0}^kerror(j)+\frac{T_D}{T}(error(k)-error(k-1))) \\ u(k)=k_perror(k)+k_i\sum_{j=0}^kerror(j)T+k_d\frac{error(k)-error(k-1)}{T} u(k)=kp(error(k)+TITj=0kerror(j)+TTD(error(k)error(k1)))u(k)=kperror(k)+kij=0kerror(j)T+kdTerror(k)error(k1)

k_p = 1;  
k_i = 1; 
k_d = 1;  
T = 0.1;  N = 100;  
error = zeros(1, N);  
u = zeros(1, N);  
error_sum = 0;  setpoint = 1;
output = 0; for k = 1:Nerror(k) = setpoint - output;error_sum = error_sum + error(k);% 计算微分项if k > 1d_error = (error(k) - error(k-1)) / T;elsed_error = 0;  endu(k) = k_p * error(k) + k_i * error_sum * T + k_d * d_error;output = output + u(k);  end% 绘制控制输入和输出的变化
figure;
plot(1:N, u, 'r', 'LineWidth', 2);
title('PID Control Input u(k)');
xlabel('Time step k');
ylabel('Control Input u(k)');

2.增量式PID

当执行机构需要的是控制量的增量(如驱动步进电机)时,应采用增量式PID控制。根据地推原理可得:
u ( k − 1 ) = k p ( e r r o r ( k − 1 ) + k i ∑ j = 0 k − 1 e r r o r ( j ) + k d ( e r r o r ( k − 1 ) − e r r o r ( k − 2 ) ) ) u(k-1)=k_p(error(k-1)+k_i\sum_{j=0}^{k-1}error(j)+k_d(error(k-1)-error(k-2))) u(k1)=kp(error(k1)+kij=0k1error(j)+kd(error(k1)error(k2)))

递推原理解释:

为什么在离散时间系统的递推关系中,通常只涉及到前两次输出 y_1, y_2 和前两次输入 u_1, u_2,而不是更多次的输入和输出。

离散时间系统的阶数

在离散时间系统的递推关系中,实际使用的输入和输出的“历史”数量与系统的阶数(或传递函数的阶数)直接相关。阶数决定了系统的动态响应的复杂性,阶数较低的系统只需要考虑少量的过去输出和输入,而阶数较高的系统则需要更多的过去输出和输入。

  • 如果我们有一个 二阶(second-order)系统,通常递推公式只涉及到 前两次的输入和输出,因为它已经足够描述系统的动态行为。
  • 对于一个 三阶 或更高阶的系统,递推公式则可能会涉及更多的历史输入和输出。

阶数的概念来源于系统的传递函数的分母和分子阶数。具体来说,离散时间系统的递推关系来源于传递函数的分子和分母的多项式。假设传递函数是这样的形式:

G ( z ) = n u m 0 + n u m 1 z − 1 + n u m 2 z − 2 1 + d e n 1 z − 1 + d e n 2 z − 2 G(z) = \frac{num_0 + num_1 z^{-1} + num_2 z^{-2}}{1 + den_1 z^{-1} + den_2 z^{-2}} G(z)=1+den1z1+den2z2num0+num1z1+num2z2

在这个传递函数中,分母的阶数决定了当前输出(y(k))与前几次输出(y(k-1), y(k-2) 等)之间的关系。分子的阶数决定了输入(u(k), u(k-1) 等)如何影响输出。

  • 分母阶数(如 den_1, den_2 决定了系统输出如何依赖于过去的输出(反馈)。
  • 分子阶数(如 num_1, num_2 决定了系统输出如何依赖于过去的输入。

为什么是有限次的历史输入和输出

系统的阶数决定了历史输入和输出的个数

  • 有限阶系统: 大多数实际控制系统在设计时会选择一个有限阶数,这意味着输出 y(k) 只与系统的有限个历史输出和输入有关。也就是说,通常情况下我们只关心系统的前两次或前三次输出和输入,而不需要考虑无限次历史数据。

  • 高阶系统: 对于一个 n阶 系统,递推公式中最多会包含 n 次历史输出和 n 次历史输入。换句话说,一个 二阶系统(如你提供的示例)只考虑前两次输出和输入。若是一个 三阶系统,则递推公式会涉及前三次输出和输入。

在现实中,大多数系统都可以通过相对较低阶的模型来很好地近似其行为,因此通常只使用前两次(或最多前三次)的输入和输出数据进行计算。

递推关系的稳定性
  • 系统的稳定性 与系统阶数、系数以及历史输入输出的数量紧密相关。随着历史数据(如输入和输出的次数)增加,递推公式可能会变得更复杂,但也更难以稳定计算。而在大多数实际应用中,二阶或三阶系统已经足够描述系统的动态行为。

离散化和系统的记忆性

在离散时间系统中,系统的记忆性(即系统如何依赖过去的状态)与其阶数和传递函数的结构紧密相关。离散时间传递函数的分子和分母系数表示了系统的因果关系记忆特性。对于一个阶数较低的系统,它通常只有有限的“记忆”,即它只会受到过去有限次输入和输出的影响。

示例:二阶系统的递推关系

假设我们有一个二阶离散时间系统,其传递函数形式为:

G ( z ) = n u m 2 z − 1 + n u m 3 z − 2 1 + d e n 1 z − 1 + d e n 2 z − 2 G(z) = \frac{num_2 z^{-1} + num_3 z^{-2}}{1 + den_1 z^{-1} + den_2 z^{-2}} G(z)=1+den1z1+den2z2num2z1+num3z2

从这个传递函数可以看出,系统的输出 y(k) 依赖于输入的前两次 u_1u_2,以及输出的前两次 y_1y_2。它的递推关系通常表示为:

y ( k ) = − d e n 1 y ( k − 1 ) − d e n 2 y ( k − 2 ) + n u m 2 u ( k − 1 ) + n u m 3 u ( k − 2 ) y(k) = -den_1 y(k-1) - den_2 y(k-2) + num_2 u(k-1) + num_3 u(k-2) y(k)=den1y(k1)den2y(k2)+num2u(k1)+num3u(k2)

这个公式表示当前输出 y(k) 与前两次输出 y(k-1)y(k-2) 以及前两次输入 u(k-1)u(k-2) 之间的线性关系。

为什么不考虑更多次的输入和输出

  • 简化模型: 在大多数实际应用中,控制系统的动态行为可以通过较低阶的递推关系来描述,更多次的历史输入输出可能会带来冗余,并且计算复杂度会大大增加。
  • 系统物理特性: 大多数物理系统或控制系统的动态行为通常是局部的,即它们的响应对过去的状态有一定的衰减。超过一定数量的过去状态,系统的响应会变得微不足道,因此不需要更多次的历史输入和输出。
  • 计算效率: 考虑更多次的历史输入和输出会显著增加计算的复杂度,尤其是对于实时系统或嵌入式系统来说,过多的历史数据可能导致计算资源的浪费。

结论

  • 系统阶数决定了在递推关系中需要考虑多少次的历史输入和输出。一个二阶系统通常只需要考虑前两次的输出和输入,而三阶系统则需要考虑前三次。
  • 大多数实际控制系统是基于有限阶数设计的,通常不需要更多次的历史输入和输出来准确描述系统行为。

通过这些理由,线性递推关系通常只涉及到系统阶数所决定的有限个历史输入和输出。

增量式PID控制算法
Δ u ( k ) = u ( k ) − u ( k − 1 ) Δ u ( k ) = k p ( e r r o r ( k ) − e r r o r ( k − 1 ) ) + k i e r r o r ( k ) + k d ( e r r o r ( k ) − 2 e r r o r ( k − 1 ) + e r r o r ( k − 2 ) ) \Delta u(k)=u(k)-u(k-1) \\ \Delta u(k)=k_p(error(k)-error(k-1))+k_ierror(k)+k_d(error(k)-2error(k-1)+error(k-2)) Δu(k)=u(k)u(k1)Δu(k)=kp(error(k)error(k1))+kierror(k)+kd(error(k)2error(k1)+error(k2))
增量式PID由于不需要累加,控制增量u(k)仅与最近k次的采样有关,所以误动作时影响小,而且比较容易通过甲醛处理获得比较好的控制效果。

根据增量式PID控制算法,设计仿真程序,被控对象如下:
G ( s ) = 400 s 2 + 5 s G(s)=\frac{400}{s^2+5s} G(s)=s2+5s400
PID控制参数:kp=8,ki=0.1,kd=10。

% incerment pid controllerclear all;
close all;ts = 0.001;
sys = tf(400,[1,50,0]);
dsys=c2d(sys, ts, 'z');
[num, den] = tfdata(dsys, 'v');u_1 = 0.0;
u_2 = 0.0;
u_3 = 0.0;y_1 = 0;
y_2 = 0;
y_3 = 0;x = [0, 0, 0]';error_1 = 0;
error_2 = 0;for k =1:1:1000time(k) = k*ts;yd(k) = 1.0;kp = 8;ki = 0.1;kd = 10;du(k) = kp*x(1) + kd*x(2) + ki*x(3);u(k) = u_1 + du(k);if u(k)>=10u(k) = 10;endif u(k)<= -10u(k) = -10;endy(k) = -den(2)*y_1 - den(3)*y_2 + num(2)*u_1 + num(3)*u_2;error = yd(k)-y(k);u_3 = u_2; u_2 = u_1; u_1 = u(k);y_3 = y_2; y_2 = y_1; y_1 = y(k);x(1) = error - error_1;                % px(2) = error - 2*error_1 + error_2;    % dx(3) = error;                          % ierror_2 = error_1; error_1 = error;
endfigure(1);
plot(time, yd, 'r', time, y, 'k', 'LineWidth', 2);
xlabel('time(s)'); ylabel('yd,y');
legend('ideal position value', 'tracking position value');

图像为:

在这里插入图片描述

3.位置式与增量式区别

比较项位置式 PID增量式 PID
控制量计算方式控制量 ( u(k) ) 是当前误差、误差积分、和误差微分的加权和。控制量增量 ( \Delta u(k) ),即当前控制量是上一时刻控制量加上增量。
公式形式( u(k) = k_p e(k) + k_i \sum_{j=0}^{k} e(j) T + k_d \frac{e(k) - e(k-1)}{T} )( \Delta u(k) = k_p e(k) + k_i e(k) T + k_d \frac{e(k) - e(k-1)}{T} ), ( u(k) = u(k-1) + \Delta u(k) )
误差依赖直接依赖于当前误差、历史误差的积累及误差变化。通过控制量的增量来调整系统,依赖于当前误差与上次误差差异。
系统初始化初始时,控制量为零或其他值,误差的历史会影响计算。初始时,控制量通常为零,系统通过增量逐渐调整。
计算复杂度需要计算误差的累积(积分项)和当前与上一时刻误差的差异(微分项)。仅计算当前误差与前一时刻误差差的增量,因此计算更简单。
控制量变化控制量直接根据所有历史误差计算,可能会导致较大的控制量变化。控制量变化平滑,由于控制量是基于增量计算的,避免了大幅度波动。
抗饱和能力如果没有适当的限制,可能出现控制量“饱和”现象(特别是积分项积累过多)。通常具有更好的抗饱和能力,因为控制量是增量形式,不会导致误差过度积累。
适应性对于系统动态变化较大的情况,可能导致调节不及时。更容易适应系统的变化,因为每次调整的是控制量的增量而非绝对控制量。
稳定性稍微不当的增益选择可能导致系统振荡或不稳定。增量控制通常更加平稳,避免了系统的不稳定。
优点1. 计算直接,适合大多数控制问题。1. 控制量变化平滑,避免了大幅波动和系统不稳定。
2. 适用于需要较大调节量的系统。2. 通常适应性较强,适合具有较高非线性和变化的系统。
缺点1. 控制量可能会过大,导致系统反应过于剧烈。1. 需要保存前一时刻的控制量,增加存储要求。
2. 积分项容易导致“积分风暴”,如果不限制,会造成饱和。2. 如果误差较大,控制效果可能较差,可能需要更精细的调节。

总结:

  1. 位置式 PID 通过绝对的控制量直接响应当前误差的情况,适用于大多数需要精确控制的系统。它的缺点是容易导致控制量的过度调节,特别是积分项可能引发“积分风暴”或饱和现象。

  2. 增量式 PID 通过增量调整控制量,避免了控制量的剧烈波动,通常具有更好的稳定性和抗饱和能力。它特别适用于对控制量变化要求平滑的系统,但由于增量控制的特性,当误差较大时,可能会需要更精细的增益调节。

在实际应用中,选择哪种方法要根据具体的系统特点和调节需求来决定。如果系统对控制量波动敏感或易于饱和,增量式PID可能更为合适。如果需要较大调整或精确的控制,位置式PID可能更具优势。


http://www.ppmy.cn/devtools/135434.html

相关文章

MFC图形函数学习09——画多边形函数

这里所说的多边形是指在同一平面中由多条边构成的封闭图形&#xff0c;强调封闭二字&#xff0c;否则无法进行颜色填充&#xff0c;多边形包括凸多边形和凹多边形。 一、绘制多边形函数 原型&#xff1a;BOOL Polygon(LPPOINT lpPoints,int nCount); 参数&#x…

研究一下前端列表分页列表数据是怎么传给后端的 后端又是如何处理的

前端表单呈现 我们在前端是用的组件化编程 直接用组件绑定的数据结构 我们在vue里面是绑定的这个表单 searchParams 这个searchParams是定义成一个对象 ref 是 vue中一种灵活绑定数据的方式 我们在官方文档中查看 接下来我们查看一下searchParams对象 const searchParams …

计算机视觉(CV):让机器看懂世界

引言 计算机视觉&#xff08;Computer Vision, CV&#xff09;是人工智能的重要领域&#xff0c;致力于让机器能够“看懂”世界。CV技术广泛应用于自动驾驶、医疗影像、安防监控和娱乐领域&#xff0c;正在改变我们的生活方式。 本文将从基本概念、技术方法、应用场景和发展方向…

【高阶数据结构】B树

> 作者&#xff1a;დ旧言~ > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;了解什么是B树&#xff0c;并能简单的模拟实现。 > 毒鸡汤&#xff1a;有些事情&#xff0c;总是不明白&#xff0c;所以我不会坚持。早安! > 专…

在openi平台 基于华为顶级深度计算平台 openmind 动手实践

大家可能一直疑问&#xff0c;到底大模型在哪里有用。 本人从事的大模型有几个方向的业务。 基于生成式语言模型的海事航行警告结构化解析。 基于生成式语言模型的航空航行警告结构化解析。 基于生成式生物序列&#xff08;蛋白质、有机物、rna、dna、mrna&#xff09;的多模态…

计算机组成与原理(2) basic of computer architecture

Instruction Set Architecture (ISA) 和 Hardware System Architecture (HSA) 是计算机体系结构中两个重要的层次&#xff0c;它们各自的职责和作用如下&#xff1a; Instruction Set Architecture (ISA) 定义 ISA是指令集体系结构&#xff0c;是硬件和软件之间的接口。它定义…

移远通信5G RedCap模组RG255C-CN通过中国电信5G Inside终端生态认证

近日&#xff0c;移远通信5G RedCap模组RG255C-CN荣获中国电信颁发的5G Inside终端生态认证证书。这表明&#xff0c;该产品在5G基本性能、网络兼容性、安全特性等方面已经过严格评测且表现优异&#xff0c;将进一步加速推动5G行业终端规模化应用。 中国电信5G Inside终端生态认…

CSS常用尺寸单位有哪些?应用场景?

CSS常用尺寸单位有哪些&#xff1f;应用场景&#xff1f; 像素&#xff08;px&#xff09;: 应用场景: 用于定义非常具体的屏幕尺寸&#xff0c;尤其是当需要精确控制元素大小时。常用于网页设计中的图像尺寸、字体大小和边框宽度。 百分比&#xff08;%&#xff09;: 应用场景…