PID学习笔记01(概述)
- 2026-11-05 08:31:50
PID是一种闭环控制算法,它动态改变施加到被控对象的输出值(Out),使得被控对象某一物理量的实际值(Actual),能够快速、准确、稳定地跟踪到指定的目标值(Target)
PID是一种基于误差(Error)调控的算法,其中规定:误差=目标值-实际值,PID的任务是使误差始终为0
PID对被控对象模型要求低,无需建模,即使被控对象内部运作规律不明确,PID也能进行调控
PID是比例(Proportional)、积分(Integral)、微分(Differential)的缩写
开环与闭环控制
开环(Open Loop):控制器单向输出值给被控对象,不获取被控对象的反馈,控制器对被控对象的执行状态不清楚。

闭环(Closed Loop):控制器输出值给被控对象,同时获取被控对象的反馈,控制器知道被控对象的执行状态,可以根据反馈修改输出值以优化控制。

PID公式与系统框图


只含有比例项的PID输出值:𝑜𝑢𝑡(𝑡)=𝐾𝑝×𝑒𝑟𝑟𝑜𝑟𝑡
比例项的输出值仅取决于当前时刻的误差,与历史时刻无关。当前存在误差时,比例项输出一个与误差呈正比的值,当前不存在误差时,比例项输出0
𝐾𝑝越大,比例项权重越大,系统响应越快,但超调也会随之增加
纯比例项控制时,系统一般会存在稳态误差,𝐾𝑝越大,稳态误差越小
下面4张图是电机定速测试波形,图中红色线表示目标速度,紫色线表示实际速度,PID的输出值直接给驱动电机的PWM占空比。

𝐾𝑝=0.25

𝐾𝑝=0.5

𝐾𝑝=0. 75

𝐾𝑝=1
PID稳态误差:系统进入稳态时,实际值和目标值存在始终一个稳定的差值
稳态误差产生原因:纯比例项控制时,若误差为0,则比例项结果也为0。被控对象输入0时,一般会自发地向一个方向偏移,产生误差。产生误差后,误差非0,比例项负反馈调控输出,当调控输出力度和自发偏移力度相同时,系统达到稳态
判断是否会产生稳态误差:给被控对象输入0,判断被控对象会不会自发偏移
判断稳态误差的方向:给被控对象输入0,自发偏移方向即为稳态误差方向
含有比例项和积分项的PID输出值:
𝑜𝑢𝑡𝑡=𝐾𝑝∗𝑒𝑟𝑟𝑜𝑟𝑡+𝐾𝑖∗0𝑡𝑒𝑟𝑟𝑜𝑟𝑡𝑑𝑡
积分项的输出值取决于0~𝑡所有时刻误差的积分,与历史时刻有关。积分项将历史所有时刻的误差累积,乘上积分项系数𝐾𝑖后作为积分项输出值
积分项用于弥补纯比例项产生的稳态误差,若系统持续产生误差,则积分项会不断累积误差,直到控制器产生动作,让稳态误差消失
𝐾𝑖越大,积分项权重越大,稳态误差消失越快,但系统滞后性也会随之增加
下面6张图为电机控速形成的波形图


𝐾𝑝=0.25, 𝐾𝑖=0.05

𝐾𝑝=0.25, 𝐾𝑖=0.2

𝐾𝑝=0.5, 𝐾𝑖=0.2

𝐾𝑝=0.25, 𝐾𝑖=0.5

𝐾𝑝=0.5, 𝐾𝑖=0.5
含有比例项、积分项和微分项的PID输出值:
𝑜𝑢𝑡𝑡=𝐾𝑝∗𝑒𝑟𝑟𝑜𝑟𝑡+𝐾𝑖∗0𝑡𝑒𝑟𝑟𝑜𝑟𝑡𝑑𝑡+𝐾𝑑∗𝑑𝑒𝑟𝑟𝑜𝑟𝑡𝑑𝑡
微分项的输出值取决于当前时刻误差变化的斜率,与当前时刻附近误差变化的趋势有关。当误差急剧变化时,微分项会负反馈输出相反的作用力,阻碍误差急剧变化
斜率一定程度上反映了误差未来的变化趋势,这使得微分项具有 “预测未来,提前调控”的特性
微分项给系统增加阻尼,可以有效防止系统超调,尤其是惯性比较大的系统
𝐾d越大,微分项权重越大,系统阻尼越大,但系统卡顿现象也会随之增加


本系列合集,基于江协科技视频教程记录转化而来,看不明白的可以去B站搜索原视频教程。在此,我是记录我自己首次学习这个技术的过程,描述的不对请给我留言修改,不喜勿喷,谢谢。