Mar*_*ark 7 temperature delay pid-controller
我需要在具有相当大延迟的系统中调整PI(D)增益.这是一种常见的温度控制器,但温度探头远离加热器.更多信息:
从加热器的任何变化开始,探头的响应延迟大约10秒
温度采样@ 1 Hz,分辨率为0.01°C
加热器是PWM控制器,周期为1 Hz,带有10位PWM
目标是将振荡保持在±0.05°C以下
目前我正在使用控制器作为PI.我无法避免振荡.增益越高,振荡越小且越快.仍然太高(约±0.15°C).降低P和I增益会导致非常长且深的振荡.
我认为这是由于延误.结算时间不是问题,可能需要它所需的所有时间.
我很困惑如何使系统工作.让我们考虑只使用I.当探头达到目标值并且I输出开始减小时,温度将上升一段时间.我不能使用导数项,因为变化太慢而且dError非常接近于零(如果我将dGain设置为一个巨大的值,则噪声太大).
任何的想法?
尝试仅 P。仅比例振荡有多快?如果您无法将 Kp 调得足够小以避免出现振荡,那么您的加热器对于您的系统来说就太强大了。
如果系统的死区时间约为 10 秒,则积分项的时间常数 (T_i) 应为死区时间的 3.3 倍,使用 Ziegler Nichols 开环 PI 规则 ( https://controls. engin.umich.edu/wiki/index.php/PIDTuningClassical#Ziegler-Nichols_Open-Loop_Tuning_Method_or_Process_Reaction_Method :) ,然后积分项应为 Ki = Kp/T_i。因此,当死区时间 = 10 秒时,Ki 应该为 Kp/33 或更慢。
如果您得到仅积分振荡,则积分的升降速度比过程响应的速度更快,并且积分应该更小。
另外——想想不同术语的单位。造成问题的可能不是延迟,而是测量和控制系统的分辨率。如果您使用 1/1024 分辨率 PWM 驱动(例如)100W 加热器,则每个 PWM 计数的分辨率为 0.1W,您尝试根据 0.01C 温差进行调整。如果小于 Kp = 100 PWMcount/度(或 10W/度),则 PWM 中没有足够的分辨率来响应 0.01C 误差进行更改。当 Kp=10PWM/C 时,您可能需要 0.10C 的变化才能导致 PWM 功率的实际变化。可以使用更高分辨率的 PWM 吗?
换句话说,如果您想在 0.01C 的温度范围内操作系统 30C,我认为您至少需要一个 15 位 PWM,以便在受控系统中具有 10 倍的分辨率。仅使用 10 位 PWM,您只能获得约 1C 的总范围,并且控制分辨率为测量分辨率的 10 倍。