1、什么是PID?
PID是一种经典且广泛应用的自动控制算法,全称是Proportional-Integral-Derivative Control(比例-积分-微分控制)。它核心目标是:让系统的输出快速、稳定、准确地跟踪设定的目标值。
生活举例:
- 假设我要控制一个烧水壶,目标温度是100℃。
- 目前的温度是20℃。
- 误差 = 目标 - 当前 = 80 ℃。
PID就是三个工人,它们合伙决定该给加热器多大的功率。
1.1 P(Proportional)-----------比例(只看现在)
-
性格:直肠子、鲁莽。
-
逻辑:“误差有多大,我就出多大力,争取维持到我的目标值”
-
行为:现在的误是80℃,很大!P说:”全功率加热!“。
-
缺点:永远到不了目标值(静差)
- 场景:当水温到达99℃时,误差只有1℃,P计算出的力气太小(比如1%功率),这点功率可能还不够抵消散热,于是水温卡在99%不动了,这就是静差。
1.2 I(Integral)------------积分(纠正过去)
- 性格:记仇、有耐性。
- 逻辑:”只要误差还在,我就一直在小本本上记账,时间越久,我越生气,力气越大。“
- 行为:P卡在99℃不动了。I 看了一会说:“怎么还是99度?不行!” I 开始慢慢增加输出,知道把水温推到100℃。I 主要用来消除误差。
- 缺点:反应慢,容易过头(超调)。因为它看的是历史积累。
1.3 D(Derivative)---------------微分 (预测未来)
- 性格:预言家,冷静。
- 逻辑:“我看的是变化的趋势。如果你冲得太快,我就踩刹车。“
- 行为:水温20℃迅速升到80℃。D发现温度上升率太快了,预测会冲过头。D说:”慢点慢点!减小功率!”即使此误差还很大,D也会产生一个负向的力来抑制过冲。
|---------Kp(比例环节)------------
| |
| +
---------输入误差(error)----------------Ki∫dt(积分环境)------- +⚪------》输出
| +
| |
|---------kd d/dt(微分环境)-------
2、如何确定PID参数
2.1凭感觉便利法(不推荐)
- 先调Kp,让系统快速响应。
- 再调Ki,以消除稳态误差。
- 最后调Kd,以消除震荡。
缺点多多:
-
风险高,代价大:
- “试凑”意味着需要系统先跑起来,如果只是普通小型设备也就算了,如果是几吨重的机械臂,高温锅炉或者无人机等,先调P看有没有震荡,可能设备直接炸机了、烧毁了或者撞坏了。
- 盲目试凑无法预知系统的边界,容易引起安全事故。
-
无法保证最优解:
- 调出来的参数可能能用,电机能转,也能停。但它是不是最快的?是不是最省电的?是不是抗干扰最强的?无从知晓。
- 我们可能在一个次优的参数陷阱里打转,而永远找不到那个完美的参数组合。
-
不可复制玄学:
- 今天如果手感好调好了A机器,明天来了一台一模一样的B机器,但是摩檫力大了一些,参数就不行了,又要重新测,缺乏鲁棒性。
2.2科学计算法(nb)
核心逻辑是:先懂对象,再出参数。
-
被控对象建模
- 这是最难的一步,也是最科学的一步。
-
实现:
- 做法:进行建模,这里的建模不是指画3D图,而是数学建模。我们需要知道电机的电感、电阻、转动惯量、摩擦系数,然后写出它的传递函数,比如 G(s) = K/(Ts+1)。
- 意义:一旦有了数学模型,就不需要通电了,我们可以再MATLAB/Simulink里完全模拟它的行为。
-
画波特图
-
做法:利用数学模型分析系统的频域特性。
-
意义:波特图能告诉你这个系统的脾气:
- 带宽:系统反应能有多块?
- 相角裕度:系统离发疯震荡还有多远的距离?
-
-
根据指标计算Kp,Ki,Kd
-
做法:进行计算
- 比如客户要求:“调节时间小于100ms,超调量小于5%”。
- 工程师利用控制理论公式,直接推导出满足上述需求的三个指标。
-
结果:算出来的参数填进去,通常第一次上电就能达到90%的效果,然后进行微调。
-