Skip to content

Latest commit

 

History

History
32 lines (18 loc) · 3.58 KB

合理地进行PID参数整定.md

File metadata and controls

32 lines (18 loc) · 3.58 KB

利用Ozone进行model-based PID tunning

Ozone的实时变量可视化监测(示波器)功能可以很好地帮助我们观察控制器在时域的表现,典型的有上升时间、超调量和稳态时间等。

调试顺序

先内环,后外环。若有已知的外部扰动如阻力、重力等可以在保持kp不变的情况下添加积分环节,并查看达到稳态时积分的输出,该输出值可以作为前馈作用通过feedforward_ptr一同送入下一个串级控制器。在没有模型的时候,计算前馈一般通过数据驱动的方法,如稳态误差-参考值关系拟合。

经典的经验式整定方法有简单的Ziegler-Nicols法和Cohen-Coon法,还有需要一定的系统辨识的Chien-Hrones-Reswick、Tyreus-Luyben和Skogestad法。这些方法在网络上或提出方法的论文中都有详尽的说明,这里不再赘述。

我们可以使用上述方法确定一套参数的初值,再根据时域表现进行精细的参数调整。

以笔者个人的纯调参无模型云台调试经验,可以进行如下步骤:

  1. 首先整定P参数,使用二分法确定大致范围。将电机参考速度和实际速度在Ozone示波器同一窗口中打开以观察时域表现。把pid的ref值添加到变量观测,方便修改(只要修改ref值,每次就可以触发阶跃信号输入)。当P达到欠阻尼且波动只有一个周期(只有超调一个峰)时,开始添加D参数。
  2. 添加微分参数。务必打开微分滤波器,并根据你的闭环带宽(速度环要跟随的频率)设置滤波系数。目前使用的是一阶低通滤波,后续考虑增加高阶滤波器和特殊的带宽滤波器(切比雪夫、巴特沃斯等)。调节D参数至P进入临界阻尼或过阻尼的状态(没有超调)。
  3. 交替增大比例系数和微分系数,直到出现不可控的微分抖动,然后减小两者的值直到出现一个合适的平衡(调个大概即可,没有模型的情况下很难达到均衡)
  4. 固定PD参数,查看不同目标值的静差。如果没有对云台进行建模,则拟合目标值与静差的关系(线性、多项式、指数、对数),并将该值作为前馈加入系统,以补偿PD无法影响的扰动项。
  5. 增加额外的积分控制以消除前馈模型不准确带来的影响。务必使用积分分离和变速积分。参数不要求精细,一般来说大致即可。

model-based控制

无模型的控制显然存在其劣势和效果上限,为了提高性能,我们需要对云台进行建模。

建模的方式包括动力学方程推导和数据驱动的系统辨识。

动力学方程的推导即分析系统的输入(电机的扭矩)和输出(速度/角度)的关系,得到系统动态的微分方程,然后使输入等于微分方程中除输出外的项,从而让输出的动态变为简单的一阶线性常微分方程,以最快的方式到达期望位置。此时再额外增加PID控制器,用于补偿建模得到的系统和实际不匹配造成的误差。建模考虑的因素越全面,建模的效果可能会越好。

系统辨识的经典方法是伯德图法即频域分析。通过给定一系列的正弦输入,观察系统的输出表现得到系统的相频曲线和幅频特性曲线,并选择一个特定结构的系统对曲线进行拟合(最小二乘或极大似然估计),对得到的系统应用超前-滞后补偿控制器以确定合适的PID参数,在裕度和带宽之间权衡,使得系统的频率响应满足设计要求。

Ozone可以非常方便的获取系统的频率响应数据。