技术论坛

 PLC实现最小二乘法计算拟合一次函数

返回主题列表
作者 主题
luwei~
游侠

经验值:514
发帖数:16
精华帖:0
楼主    2023-07-11 19:32:12
主题:PLC实现最小二乘法计算拟合一次函数

楼主最近碰到了一个需求,需要计算两段加热区域的加热时间的区别,控制较慢的那个区域进行延迟加热,最终两个区域在同一时间达到设定温度。

主要的思路是计算每个区域的温升斜率,再根据设定值,实际值,计算出可能的加热时间。今天主要想介绍一下温升斜率的计算。

上图是正常的一个温升曲线。可以发现随着温度的升高,每分钟增加的温度并不一致。单纯计算斜率并不精确。

最开始的思路是记录100个点(温度,时间),在加热开启之后通过lintab的形式计算对应的加热时间。这个方案遇到了两个问题:1,一百个点都需要断电保持。由于为了可扩展性,增加了至多73组的加热区域,对CPU资源占用较大。2.由于加热材料,环境温度的变化,需要反复学习这些点,对应用上也是一个负担。在网上找了一些资料,由于这个曲线线性拟合性较好,所以想着通过拟合函数的形式简化计算。以下是代码。(ST语言环境编写的)

变量声明部分:

代码实现部分:


其中Ramp是斜率,offset是偏移部分。

仿真实现:模拟了几个数据。


代码仿真结果:


Excel验算:


由于实际的加热过程并不是理想的一次函数,最小二乘法的引入能将偏差缩小。实际的应用过程中,偏差能控制在10s以内,较好的实现了设计的目标。




您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。