电子产业一站式赋能平台

PCB联盟网

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

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

[复制链接]

395

主题

395

帖子

2304

积分

三级会员

Rank: 3Rank: 3

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

0dbunuu4py464011390240.png

0dbunuu4py464011390240.png

7 v% Y# Y7 H1 h. L4 v9 `% m, K* g, X$ {4 R$ [& y: Y/ N$ c
微分(D)项是PID控制器的一个组成部分,它对系统的控制输出做出反应,以减小系统的过度调节和减小响应的快速变化。微分项的作用是在控制系统中引入一个滞后效应,以帮助系统平稳响应。
; W* i0 W; b# N' p7 l以下是微分(D)项的详细介绍:
$ q3 D( s# w5 b1. 作用原理:微分项的计算基于误差的变化率,通常是误差随时间的导数。微分项根据误差的变化率来计算控制输出。微分项的数学表达式如下:% A2 X/ _  f& C: T

jsktspuv1ol64011390340.png

jsktspuv1ol64011390340.png

! y* P/ A2 F1 S( a; U    2. 影响:微分项对系统的控制输出有两个主要作用:首先,它减小系统的过度调节,防止振荡;其次,它帮助减小系统响应的快速变化,使系统更稳定。微分项通常在系统的短期变化和噪声中起关键作用,对系统的瞬时响应有较大影响。    3. 微分时间常数:微分时间常数T(d)是一个重要参数,它控制了微分项的响应速度。较大的T(d)值会导致微分项的响应较慢,较小的T(d)值会导致响应较快。通过调整T(d),可以平衡系统的响应速度和稳定性。    4. 调节:调节微分增益K(d)和微分时间常数T(d)是调整PID控制器性能的关键。根据具体应用,您可能需要不同的K(d)和T(d)值。一种常见的调节方法是通过试验和模拟来找到合适的K(d)和T(d)值,以使系统能够快速响应和保持稳定。5. 特点:微分项主要用于减小过度调节和平稳系统的响应,因此在系统的瞬时响应中起关键作用。如果微分增益K(d)设置得过高,可能会导致系统过度调节或引入噪声。如果微分增益设置得过低,系统可能无法减小响应的快速变化。
- r! `: n) t7 S& D9 {在PID控制器中,微分项通常与比例项和积分项一起使用,以综合控制系统的性能。合理设置微分增益K(d)和微分时间常数T(d)是PID控制器调节的关键,因为它们直接影响了系统的响应速度和稳定性。通过仔细调整微分项,可以实现系统的精确控制和稳定性。微分(D)项通常在实际的PID控制器实现中需要计算误差的变化率,以计算微分项的控制输出。( t5 N( h! o6 x$ M& o8 ?% O# H

& A5 h3 @2 a3 E% m8 E. l下面是一个简单的C语言示例代码,演示如何计算微分项的控制输出:- ?- j# F  M3 |- H' V; C  i
  • #include // PID控制器参数float Kd = 1.0;  // 微分增益float Td = 0.1;  // 微分时间常数// 全局变量用于存储上一次的误差float previousError = 0.0;// 计算微分项float calculateDerivative(float error, float deltaTime) {    // 计算误差的变化率    float errorChange = (error - previousError) / deltaTime;
    - C' Q3 u) n. x; i% V/ b$ W    // 计算微分项的控制输出    float derivativeOutput = Kd * errorChange * Td;
    / e+ c6 \9 ?- l; H2 {    // 更新上一次的误差    previousError = error;5 y/ R+ e+ |5 N6 R( [
        return derivativeOutput;}int main() {    float setpoint = 100.0;  // 期望值    float processVariable = 80.0;  // 实际测量值    float error = setpoint - processVariable;    float deltaTime = 0.1;  // 采样时间间隔    // 计算微分项的控制输出    float output = calculateDerivative(error, deltaTime);    // 输出结果    printf("Derivative Output: %f  l# X" l! H  {6 V' E# a
    ", output);    return 0;}在上面的示例中,我们定义了微分增益K(d)和微分时间常数T(d),它们用于调整微分项的影响。calculateDerivative 函数接受误差值和采样时间间隔作为参数,然后通过计算误差的变化率来计算微分项的控制输出。还使用一个全局变量 previousError来跟踪上一次的误差值,以计算误差的变化率。# v/ M* s- }: E0 f$ @1 W* {# M: @
    ==========1 l8 D6 n- n- d% t" {! e
    往期回顾:【PID专题】控制算法PID之积分控制(I)的原理和示例代码0 K" F  m8 b+ [8 ~* @! f( Q
    【PID专题】控制算法PID之比例控制(P)的原理和示例代码
    8 t4 p" G4 A+ a  p电平触发、脉冲触发、边沿触发的区别和示例代码& d; \) f7 ~5 d; I4 J
    上下拉电阻的原理和4种应用$ y& r+ B+ b; a/ {( q
    FreeRTOS中osDelay和HAL_Delay的区别
    : t3 x5 c% r: `+ O* c' v2 I+ i==========
    5 J7 ~6 b# F5 O2 \! d

    wmoiw4rvhj164011390440.png

    wmoiw4rvhj164011390440.png

    1 V2 ?. _+ e( Y) H# q' F. g
    $ @/ h9 h1 J) o* V, R
    - ]& T. I, k! T9 l- f/ v

    0msotza0w0k64011390540.png

    0msotza0w0k64011390540.png
  • 回复

    使用道具 举报

    发表回复

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

    本版积分规则


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