PID算法原理
PID控制算法是一种经典的反馈控制算法,用于调节控制系统的输出,使其达到预定的目标值。
P:比例项,与当前误差成正比(y = kx
)
I:积分项,与误差随时间的累积成正比
D:微分项,与误差的变化率成正比
PID算法控制系统的输出则为:
控制输出 = Kp⋅当前误差 + Ki⋅误差积分 + Kd⋅误差微分
其中,
误差积分 = 积分项 + 误差⋅采样时间
误差微分 = (误差 - 上一次误差)/ 采样时间
由于,计算机处理的为离散信号,所以采样时间在下例中设置为1.
PID算法实现步骤:
PID控制算法通常通过以下步骤来实现:
测量过程变量: 首先,需要测量系统的当前状态,即实际值。这通常由传感器完成。
1.计算误差: 将目标值与实际值相比较,计算误差(差值)。
2.计算PID控制输出: 使用PID算法计算控制输出,如上述公式所示。
3.应用控制输出: 将计算得到的PID控制输出应用于控制系统,例如,通过调整阀门、电机或其他执行器的位置或电压,以实现系统的控制。
4.迭代调整: 在每个控制周期中,不断重复上述步骤,以根据实际情况调整PID参数,以使系统更好地满足性能要求。
代码演示
import matplotlib.pyplot as plt
integral = 0.0
previous_error = 0.0
def simulate_pid(current, target):
Kp = 1.0
Ki = 0.1
Kd = 0.02
error = target - current
# 声明要修改全局变量
global integral, previous_error
# 更新积分项
integral = integral + error
# 更新微分项
derivative = error - previous_error
# 计算输出
control_output = Kp * error + Ki * integral + Kd * derivative
previous_error = error
current += control_output
return current
if __name__ == "__main__":
temperature_list = [10.0]
current_temperature = 10.0
for step in range(200):
current_temperature = simulate_pid(current_temperature, 50.0)
temperature_list.append(current_temperature)
print(temperature_list)
time_list = [i for i in range(201)]
# 使用Matplotlib创建折线图,画图
plt.plot(time_list, temperature_list,
linestyle='-', color='b', linewidth=1) # 'o'表示添加圆点标记,'-'表示线段,'b'表示蓝色线条
plt.xlabel('time') # 设置X轴标签
plt.ylabel('temperature') # 设置Y轴标签
plt.title('output') # 设置图表标题
# 显示折线图
plt.show()
结果如图所示,大概在25个周期的时候,温度达到目标温度:50,也可以改变Kp、Ki、Kd的大小,观察输出的变化