学习记录)
前言PID是自动控制领域应用最广泛的控制算法。1.PID基本了解PID算法通过比例、积分和微分三种环节的组合可有效地纠正被控制对象的偏差从而使其达到一个稳定的状态。几乎所有带“恒温”、“恒速”、“恒压”功能都要用到。2.比例控制 Kp当下一旦误差目标值-反馈值出现就产生控制作用以减小偏差。输出u(t)与误差e(t)成正比能迅速反映偏差从而减小偏差但不能消除稳态误差。比例系数Kp越小控制作用越小系统响应越慢反之比例系数Kp越大控制作用也越强则系统响应越快。但是Kp过大会使系统产生较大的超调和振荡导致系统的稳定性能变差。后面我产生了疑问。为什么Kp的取值能大于1目标值-实际值误差值。Kp大于1Kp*误差值实际值不是直接超过目标值了吗以下是deepseek解释核心误解目标值 ≠ 输出值你潜意识里把 “PID计算出的输出值” 当成了 “物理世界里的目标值”。• 你的误解误差5°CKp10输出50°C。这不就冲过头了吗• 工程的真相误差的单位是°C但PID输出的单位是“控制量”比如 “加热功率的百分比%”、“阀门的开度%”或“PWM占空比”。举个例子假设你要把一个100°C的锅炉加热到200°C目标值。当前温度是150°C那么误差 200 - 150 50°C。• 如果我的 Kp 10那么 Kp × 误差 500。• 这时候这个“500”并不是代表“我要加热到500°C”而是代表“我要把加热功率开到 500% ”物理极限的“限幅”与“归一化”在实际工程代码中输出值Output是有物理上限的。• 如果输出代表PWM占空比范围是 0 ~ 100%或者0~255的数字。• 如果输出代表阀门开度范围也是 0 ~ 100%。当你计算出 Kp × 误差 500而最大输出只能是 100 时控制器会直接把输出强制限制在 100%这叫输出限幅。所以Kp的作用并不是“直接给出最终结果”而是“决定响应速度的力度”• 如果 Kp0.5误差50°C输出25%火开四分之一升温慢。• 如果 Kp10误差50°C计算值500输出被限幅到100%火力全开升温极快。• 当温度升到199°C时误差1°CKp10 输出10%火开十分之一小火维持。你会发现Kp 大于1只是为了用高增益把误差“放大”到控制信号的物理满量程而不是把误差放大到目标值。3.积分控制Ki过去用来消除稳态误差把过去所有误差积累起来。只要误差没消除积分项就不断累加直到把误差彻底归零。Ki越大消除静态误差越快但容易超调积分饱和使系统超过设定值产生振荡。Ki越小消除静态误差越慢但系统更稳定震荡小。4.微分控制Kd未来微分是误差对时间的变化率也就是误差变化快慢。微分不看误差本身大小看误差涨得快还是跌得快做预判刹车。Kd越大有效抑制超调削弱振荡但对噪音敏感。Kd越小受噪音干扰小输出平滑但抑制效果差。