我需要在一个延迟很大的系统中调整PI(D)的增益。这是一个常见的温度 Controller ,但温度探头距离加热器较远。一些进一步的信息:
目前,我正在使用 Controller 作为PI。我无法避免振荡。增益越高,振荡越小且速度越快。仍然太高(约±0.15°C)。
减小P和I增益会导致很长很深的振荡。
我认为这是由于延迟。
稳定时间不是问题,它可能需要花费所有时间。
我对如何使系统工作感到困惑。让我们考虑仅使用I。当探头达到目标值并且I输出开始降低时,温度将再次升高。我不能使用导数项,因为变化太慢并且dError非常接近于零(如果将dGain设置为一个很大的值,则会产生过多的噪声)。
任何想法?
最佳答案
尝试仅P。仅比例振荡的速度有多快?如果您无法将Kp调得足够小而没有振荡,则说明您的加热器功率过大。
如果系统的死区时间约为10s,则使用Ziegler Nichols开环PI规则(https://controls.engin.umich.edu/wiki/index.php/PIDTuningClassical#Ziegler-Nichols_Open-Loop_Tuning_Method_or_Process_Reaction_Method:),积分项的时间常数(T_i)应为死区的3.3倍,然后积分项应为Ki = Kp/T_i。因此,死区时间= 10s时,Ki应该为Kp/33或更慢。
如果您正在获得仅积分振荡,那么积分的上下摆动速度将比过程响应快,并且它应该更小。
另外-考虑不同术语的单位。可能不是造成您的问题的延迟,而是测量和控制系统的分辨率。例如,如果要驱动一个具有1/1024分辨率PWM的100W加热器,则您要根据0.01C的温差来调整每个PWM计数的分辨率为0.1W。小于Kp = 100 PWMcount/度(或10W/度)时,PWM中没有足够的分辨率来响应0.01C错误进行更改。在Kp = 10PWM/C时,您可能需要更改0.10C才能实际改变PWM功率。可以使用更高分辨率的PWM吗?
换句话说,如果要在0.01C的30C范围内运行系统,我想您至少需要一个15位PWM,其分辨率是受控系统的10倍。仅用10位PWM,在控制下以10倍于测量分辨率的分辨率,您只能得到大约1C的总量程。
关于delay - 在具有延迟的系统中调整pid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26508261/