技术论坛

模拟量平滑处理//模拟量平均值算法 sliding average

作者 主题
侠客

经验值: 970
发帖数: 140
精华帖: 1
主题:【探讨】模拟量平滑处理//模拟量平均值算法 sliding average


只看楼主 楼主 2020-02-22 11:41:14

论坛各位老师好。

最近有个项目,需要计算模拟量平均值。

也就是模拟量的平滑处理

30分钟,每一秒钟取值一个数据。需要平均值

原来程序是这样处理的:

Analog_Value=(1799*Analog_Value+Analog Real)/1800

数据到30分钟之后才会比较准确,之后因为数据是保存的,误差不是很大,但是迟滞性较高。

论坛上看到一个处理公式:

FILTERED_SIGNAL:= K*FILTERED_SIGNAL + (1-K)*ACTUAL_ANALOG_SIGNAL
K - should be in range from 0 to 1, close to 0 weak filter, close to 1 strong filter

感觉是线性回归的处理方法。跟我的看到的程序思路一样。但是K值 该如何确定呢?

大家感觉FB该如何写好一些?                 


但行好事,莫问前程
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1609169&b_id=50&s_id=0&num=7

侠客

经验值: 970
发帖数: 140
精华帖: 1
回复:模拟量平滑处理//模拟量平均值算法 sliding average


只看楼主 楼主 1楼 2020-02-22 11:47:48
但行好事,莫问前程
以下网友喜欢您的帖子:

  
至圣

经验值: 12573
发帖数: 2503
精华帖: 31
回复:模拟量平滑处理//模拟量平均值算法 sliding average
推荐帖


只看楼主 2楼 2020-02-22 13:03:02

30分钟周期,每秒采集1次,也就是1800分之1,这滤波滞后太可怕了。如果工艺周期是3000分钟还好说,如果工艺周期远远小于30分钟,那么这滤波就是开玩笑了。

至于平均值开始的数据不准确,只是你的滤波程序有问题罢了。如果你把被除数1800替换为已经采集到的数据数量,那么就是准确的。比如现在只采集到10个那么Analog_Value=(1799*Analog_Value+Analog Real)/10,采集100个 就Analog_Value=(1799*Analog_Value+Analog Real)/100,只要把后面的除数做成变量跟采集次数挂钩就可以了。

个人建议还是采用第二个公式(一阶线性滤波)更实在,K值是根据滤波效果觉得的,自己根据现场实际干扰情况分别使用不通的k值测试就知道用多大的k了。

反正就是达到想要的滤波效果就可以了。


 
以下网友喜欢您的帖子:

  
侠客

经验值: 970
发帖数: 140
精华帖: 1
回复:模拟量平滑处理//模拟量平均值算法 sliding average


只看楼主 楼主 3楼 2020-02-22 14:44:35

在Z侠客启发下,又参考论坛前辈的帖子, 总结如下:

“加权平均滤波”(也就是一阶惯性滤波);

filter = [filer (n - 1) +New] / n

式中,

filter -滤波输出值

New  -  新值

n  -  新值权重

比如n=7,则新值对输出的影响占1/7

我的采样周期是30min, 1s 采样一次,所以 新值权重是1800.

那么 Analog_Value =(1799*Analog_Value+Analog Real)/1800.

重点是,在HMI 上查看这个趋势图。增量是1800(30min), 即30min取值一次,理论上满足要求。




但行好事,莫问前程
以下网友喜欢您的帖子:

  
至圣

经验值: 23705
发帖数: 3383
精华帖: 52
回复:模拟量平滑处理//模拟量平均值算法 sliding average


只看楼主 6楼 2020-09-24 07:59:16
以下是引用guozs1990在2020-02-22 14:44:35的发言 >3楼

在Z侠客启发下,又参考论坛前辈的帖子, 总结如下:

“加权平均滤波”(也就是一阶惯性滤波);

filter = [filer (n - 1) +New] / n

式中,

filter -滤波输出值

New  -  新值

n  -  新值权重

比如n=7,则新值对输出的影响占1/7

我的采样周期是30min, 1s 采样一次,所以 新值权重是1800.

那么 Analog_Value =(1799*Analog_Value+Analog Real)/1800.

重点是,在HMI 上查看这个趋势图。增量是1800(30min), 即30min取值一次,理论上满足要求。



你这个只能叫数据统计, 平滑处理有点台太牵强了。


不忘初心
以下网友喜欢您的帖子:

  
至圣

经验值: 43582
发帖数: 15779
精华帖: 61
回复:模拟量平滑处理//模拟量平均值算法 sliding average


只看楼主 7楼 2020-09-24 12:04:34

一阶滞后滤波:out(n)=k*out(n-1)+(1-k)*pv,k取值[0~1),k=0没有滤波,K越大,滤波越明显。

求平均值的用fifo队列,看图




活到老,学到老!为了生活学习吧!
以下网友喜欢您的帖子:

  
至圣

经验值: 43582
发帖数: 15779
精华帖: 61
回复:模拟量平滑处理//模拟量平均值算法 sliding average


只看楼主 8楼 2020-09-24 12:27:05

图上给出了两种计算方法,更复杂一点的还可以增加权重参数。


活到老,学到老!为了生活学习吧!
以下网友喜欢您的帖子:

  
至圣

经验值: 23705
发帖数: 3383
精华帖: 52
回复:模拟量平滑处理//模拟量平均值算法 sliding average


只看楼主 10楼 2020-10-17 07:50:17

http://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1246410&b_id=4&s_id=23&num=20#anch


不忘初心
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
模拟量平滑处理//模拟量平均值算法 sliding average
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。