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()