电子产业一站式赋能平台

PCB联盟网

搜索
查看: 616|回复: 0
收起左侧

【PID专题】控制算法PID之积分控制(I)的原理和示例代码

[复制链接]

395

主题

395

帖子

2304

积分

三级会员

Rank: 3Rank: 3

积分
2304
发表于 2023-11-1 21:00:00 | 显示全部楼层 |阅读模式

5ax5kjklb0t64011390643.png

5ax5kjklb0t64011390643.png
( L: H1 I1 [! i
7 U( N' i/ {9 i0 ?% r
积分(I)项是PID控制器的一个重要组成部分,它对系统的控制输出做出反应,以减小系统的静态误差,即长时间内误差积累导致的误差。积分项的作用是在控制系统中引入一个积分效应,以便持续减小系统的稳态误差。/ i) a- `' @, C

1 e7 C) c, R2 ^以下是积分(I)项的详细介绍:
! D( X( e* _+ ?8 F9 W  f! O    1.作用原理:积分项的计算基于误差的积分,通常是误差随时间的积分。积分项将误差积累,并根据积分时间常数T(i)来计算控制输出。积分项的数学表达式如下:
* R) G0 T8 U# D6 U8 ]

5dxebzrn5o264011390743.png

5dxebzrn5o264011390743.png

  F2 S4 D/ F% K5 o: \2.影响:积分项对系统的控制输出有两个主要作用:首先,它减小系统的稳态误差,确保系统最终能够达到期望值;其次,它帮助减小系统的过度调节,防止振荡。积分项通常在控制系统长时间运行时显现出作用,对短期变化的响应较小。3.积分时间常数:积分时间常数T(i)是一个重要参数,它控制了积分项的响应速度。较大的T(i)值会导致积分项的响应较慢,较小的T(i)值会导致响应较快。通过调整T(i),可以平衡系统的稳态误差和过度调节之间的关系。4.调节:调节积分增益K(i)和积分时间常数T(i)是调整PID控制器性能的关键。根据具体应用,您可能需要不同的K(i)和T(i)值。一种常见的调节方法是通过试验和模拟来找到合适的K(i)和T(i)值,以使系统能够快速达到期望值并保持稳定。5.特点:积分项主要用于减小稳态误差,因此在系统长时间运行时起关键作用。如果积分项设置得过高,可能会导致系统过度调节或振荡。如果积分项设置得过低,系统可能无法消除稳态误差。
- M, a2 i9 s; ~4 y) H在PID控制器中,积分项通常与比例项和微分项一起使用,以综合控制系统的性能。合理设置积分增益K(i)和积分时间常数T(i)是PID控制器调节的关键,因为它们直接影响了系统的稳态误差和响应速度。通过仔细调整积分项,可以实现系统的精确控制和稳定性。
5 G& D. J% c* X
6 I! {( w* [% j- Z$ K积分(I)项通常在实际的PID控制器实现中需要进行累积误差,以计算积分项的控制输出。下面是一个简单的C语言示例代码,演示如何计算积分项的控制输出:
6 u& b1 _. h# _
  • #include
      V" k. B* X' l+ r/ X9 p4 `// PID控制器参数float Ki = 0.1;  // 积分增益float Ti = 1.0;  // 积分时间常数
    % P2 y$ i1 C) j& X, H3 i8 x4 w// 全局变量用于存储累积误差float accumulatedError = 0.0;5 G+ a# K: P$ t0 b
    // 计算积分项float calculateIntegral(float error, float deltaTime) {    // 累积误差    accumulatedError += error * deltaTime;. N! g- N! \/ K" L7 o0 S
        // 计算积分项的控制输出    float integralOutput = Ki * accumulatedError / Ti;    return integralOutput;}7 S) U; e9 x& ~9 ^
    int main() {    float setpoint = 100.0;  // 期望值    float processVariable = 80.0;  // 实际测量值    float error = setpoint - processVariable;    float deltaTime = 0.1;  // 采样时间间隔
    2 B* m7 p4 H" M# u$ o9 O# d/ U  b    // 计算积分项的控制输出    float output = calculateIntegral(error, deltaTime);8 z  W. I$ q8 K* g$ }4 w/ @
        // 输出结果    printf("Integral Output: %f
    ) [. N9 B6 S* w0 L! n' }6 T/ T", output);5 k8 R5 R* n# Y7 b: F% x/ z  `6 o+ F
        return 0;}在上面的示例中,我们定义了积分增益(Ki)和积分时间常数(Ti),它们用于调整积分项的影响。calculateIntegral 函数接受误差值和采样时间间隔作为参数,然后通过累积误差来计算积分项的控制输出。最后,我们使用示例值来计算积分项的输出并打印结果。=========往期回顾:【PID专题】控制算法PID之比例控制(P)的原理和示例代码& J6 H+ w3 x  ]2 O( U: {
    电平触发、脉冲触发、边沿触发的区别和示例代码
    4 \- S8 p3 Q) }# ?" c上下拉电阻的原理和4种应用
    : E# V( [3 ?3 w9 SFreeRTOS中osDelay和HAL_Delay的区别1 d0 K/ \0 c0 e2 v; C& D
    ==========
    , u% W9 K9 H" v& }

    xyguov41i2o64011390843.png

    xyguov41i2o64011390843.png

    9 D9 t1 V# \' J# ?) W, i  @8 Q5 x7 ^5 ~4 ?# \$ Y- ]

    % F1 N! t5 y7 p- X1 ]% b

    sd2ecuf0w1464011390943.png

    sd2ecuf0w1464011390943.png
  • 回复

    使用道具 举报

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则


    联系客服 关注微信 下载APP 返回顶部 返回列表