热度 4
2023-7-6 13:14
3512 次阅读|
1 个评论
罗昊 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 控制方法需要使用在线性系统中。这个加热控制在温度低时可以加热。超温时只能靠散热。负输出与正输出不对称。因而是非线性的。 测温电阻存在测温误差和噪声。但测量结果作为反馈输入。会引入误差。