PID简述
更新时间: 2026/02/09
在Gitcode上查看源码

PID调速

目标调速(PID调速)基于比例积分微分控制器控制风扇转速,使器件温度快速逼近设定的目标温度值,保障能够获取温度值器件的散热,其中比例、积分、微分的参数通过模糊控制器动态调整

清晰的PID理论提出时间

PID的发展是理论与实际应用并行的,这里给出的是白志刚《自动调节系统解析与PID整定》里的清晰的PID理论提出时间。 1936年,英国诺夫威治市帝国化学有限公司(Imperial Chemical Limited in Northwich, England) 的考伦德( Albert Cal-lender)和斯蒂文森(AIlan Stevenson)等人给出了一个温度控制系统的PID控制器的方法,并于1939年获得美国专利。

PID算法的作用或者说它是为了满足什么需求被提出来的

  • 它可以将需要控制的物理量带到目标附近。
  • 它可以“预见”这个量的变化趋势。
  • 它也可以消除因为散热、阻力等因素造成的静态误差。

PID各部分的作用

  • P 快速调节,将需要控制的物理量带到目标附近。
  • I 消除静差,静差就是指,稳定状态下当前值和目标值的差,静差的出现是因为有耗散、阻尼。
  • D 抑制震荡,让被控制的物理量的“变化速度”趋于0,即类似于“阻尼”的作用。

一个简单的 PID模拟 python

python
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd


# 比例 线性的
def Kp_plus(Kp_0, ans_0):
    return Kp_0 * (target - ans_0[-1])


# 积分 这里采用累加差值模拟
def Ki_plus(Ki_0, ans_0):
    temp = len(ans_0) * target - sum(ans_0)
    return Ki_0 * temp


# 微分 这里采用前两次差值之差
def Kd_plus(Kd_0, ans_0):
    try:
        temp = (target - ans_0[-1]) - (target - ans_0[-2])
        return Kd_0 * temp
    except IndexError:
        return 0


target = 100  # 目标值

# Kp Ki Kd
Kp = 0.6
Ki = 0.05
Kd = 0.05

# time 可以理解为时间
# ans存的是time[i]对应的进度值
# time_max 时间的最大值
time = [0]
ans = [0]
time_max = 20

for t in range(1, time_max):
    time.append(t)
    kpp = Kp_plus(Kp, ans)
    kip = Ki_plus(Ki, ans)
    kdp = Kd_plus(Kd, ans)
    print(kpp, kip, kdp)
    ans.append(ans[t - 1] + kpp + kip + kdp - 10)  # 这里的-10大概是指外部耗散or阻尼等
    print(t, target-ans[-1])
print(ans)

# 简单的绘图
plt.figure()
plt.plot(time, ans)
plt.show()