罗昊 southcreek's product
这个加温器建模如下:输入的设定温度与输出的温度比较,将比较值使用PI调节器处理,输出控制。温度模型由实际加温装置测定而来,在这个模型中,满功率加热时,每秒钟目标温度上升0.12度。目标散热速度与环境温度相关认为是正比于实时温度与环境温度差。显然散热速度不能大于加温速度,否则就加温不了。
PI调节器的设计如图所示,比例部分温差值经过P增益 Pgain输出。积分部分为当前温差累加先前的累加输出。为防止积分器失控,累加输出需要作限幅处理。使积分器输出处于±1之间。经过Igain与比例部分相加,同时限幅处理。因为现在的温控器只能加温,没有制冷。所以将控制输出限制在0~1之间。
建立这个模型的目的是查找合适的Pgain 和 Igain值。使输出稳定。不超调。仿真的步长为1S。
Pgain 设置为2 Igain设置为0,也就是纯比例控制。可以发现输出稳定时低于设定值。
Pgain 设置为200 Igain设置为0.1,并没有出现预期的振荡。且输出值误差很小。
Pgain 设置为2 Igain设置为1,有稍许超调。但积分部分起了作用,消除了误差。
使用一个脚本对积分参数进行扫描仿真。
open_system('warmermodule');
gainBlock = get_param('warmermodule/Igain', 'Handle');
gainValue = 0.05:0.1:0.95;
% 循环改变增益并运行模型
for i = 1:length(gainValue)
% 改变增益值
set_param(gainBlock, 'Gain', num2str(gainValue(i)));
% 运行模型
sim('warmermodule');
t(:,i)=yout(:,1);
end
plot(t)
grid on
legend('0.05','0.15','0.25','0.35','0.45','0.55','0.65','0.75','0.85','0.95')
得到输出结果:
可以看到积分参数设置比较低时,过冲小,但稳定时有偏差。积分分量大时,过冲增加,但偏差小。
在实际的机器上进行测试,得到如下结果:
Pgain 2 Igain 0.05
Pgain1 Igain 0.5
Pgain 1 Igain 0.1
可以看出,修改不同的控制参数,都会出现过冲(超调量)。稳定控制时,总会有小许波动。在比例系数设置为2积分参数设置为0.5时,温度输出发生振荡,显然不可用。
仿真结果与实际测试的结果差异如此之大。原因分析如下:
1、 模型不准确。
2、 系统非线性。PI控制方法需要使用在线性系统中。这个加热控制在温度低时可以加热。超温时只能靠散热。负输出与正输出不对称。因而是非线性的。
测温电阻存在测温误差和噪声。但测量结果作为反馈输入。会引入误差。
作者: southcreek, 来源:面包板社区
链接: https://mbb.eet-china.com/blog/uid-me-408807.html
版权声明:本文为博主原创,未经本人允许,禁止转载!
southcreek 2023-7-8 21:19