如果受控系统的时间常数可变,如何设置PID控制?


9

连续PID控制器的通用描述是这样写的: 最好给定受控系统的常数K_pK_iK_d的值将取决于其时间常数,可以是\ text {PT} _1系统或\ text {PT} _2系统等。

y(t)=Kpe(t)+Ki0te(τ)dτ+Kdde(t)dt
KpKiKdPT1PT2

如果此类系统的时间常数可变,该怎么办。可以说,它在TaT_b之间变化TbTa<Tb)。您如何设计PID常数?

Answers:


8

一种方法是实现某种形式的自适应控制。如果您的时间常数范围很小且已知,则可以使用“增益调度”之类的方法 ,在此之前您可以预先确定要处理的所有时间常数(希望是有限的),并使用if / then逻辑定义PI和D。要确保涵盖了足够的可变性以确保整个范围内的稳定性和性能,这可能是一个挑战。奇努克直升机是成功进行收益调度的成功典范。可以办到。

如果您没有关于时间常数的可行预测,则可以考虑使用模型参考自适应控制(MRAC)。在这种控制方案中,您将拥有一个带有所选PID控制器的参考模型(理想的系统)。MRAC可以最大程度地减少工厂实际执行的操作与参考模型执行的操作之间的错误。通过这种方式,您迫使变化中的工厂像您的LTI模型一样工作。

或者,您可以尝试使用模型识别自适应控制器(MIAC)。在这里,控制方案可以实时进行系统识别,并为您的控制器使用更新定律。这需要三种思想中最先进的技巧。

由于您的系统会随着时间改变时间常数,因此不再是LTI。这意味着您需要进行增益调度(如果您知道时间常数的范围就非常容易)或使用PID的更新定律进行系统识别。


为什么不通过设计更大的时间步长并通过在每次迭代过程中等待提交执行器命令来使软件准实时来动态均衡时间步长?
Gürkan切廷

@GürkanÇetin等待什么软件?您能帮助我了解软件故意延迟控件更新时发生了什么吗?
willpower2727

如果我理解正确,那么在计算迭代的每个循环中都有未知的时间延迟(即由于I / O通信或其他CPU任务)。这是非实时目标(OS)上的普遍问题。因此,将控制器调整为预定的(长)delta_t(例如100毫秒),然后在每次迭代时,尝试将总循环时间调整为该delta_t(假设控制算法在第80毫秒之前完成,再等待20毫秒) )提交控制命令;如果已知所有其他任务所花费的时间少于100毫秒(减去控制律的计算时间),则该命令可以工作。
Gürkan切廷

@GürkanÇetin如果我正确理解原始问题,那么问题是关于如何控制工厂的物理方面何时随时间变化(即,火箭随时间损失质量),而不是如何处理非实时操作循环执行时间。我确实认为您的建议在处理运行控制器的非实时操作系统方面可能是有效的。
willpower2727

哦,是的。我弄错了这个问题。在这种情况下,如果工厂在一段时间内(突然或逐渐)变化,我想说重新配置是另一种可能性。当然,仅当您知道模型动力学的变化时,该方法才有效。像丢掉质量,消耗燃料,提取/缩回起落架等。
GürkanÇetin15
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.