PLC如何求模拟输入量在一段时间内的平均值? 点击:11019 | 回复:13



爱在远方

    
  • 精华:0帖
  • 求助:1帖
  • 帖子:11帖 | 86回
  • 年度积分:0
  • 历史总积分:146
  • 注册:2005年5月20日
发表于:2008-05-08 10:36:24
楼主

现在有一个模拟输入量,应为模拟量的读入值一直是变化的,为了稳定显示,需要求出他在一定时间t(比如3秒)平均值,有什么方法吗?自己如何编写这样的程序?我用s7-214的CPU,是否有相应的模块?

我目前用的方法是3秒读一次数据,但是觉得这样不太准确,显示波动比较大,所以想求其平均值,不知道各位高手有什么好的建议?




爱在远方

  • 精华:0帖
  • 求助:1帖
  • 帖子:11帖 | 86回
  • 年度积分:0
  • 历史总积分:146
  • 注册:2005年5月20日
发表于:2008-05-08 13:27:56
1楼

不知道是否有人也有遇到这样的情况,有什么比较好的办法,如何解决的?

cdust

  • 精华:1帖
  • 求助:0帖
  • 帖子:37帖 | 1817回
  • 年度积分:0
  • 历史总积分:2396
  • 注册:2005年12月22日
发表于:2008-05-08 13:44:28
2楼
每10S取一次,取18次,然后加起来!再除以18

二十四桥明月夜

  • 精华:3帖
  • 求助:0帖
  • 帖子:114帖 | 3593回
  • 年度积分:0
  • 历史总积分:7688
  • 注册:2008年3月16日
发表于:2008-05-08 13:44:57
3楼
OMRON的AD卡自动有这种求平均的功能,最多16次一平均,只要设置好参数就可做到.

如果自已编,怎做呢,我想一想

二十四桥明月夜

  • 精华:3帖
  • 求助:0帖
  • 帖子:114帖 | 3593回
  • 年度积分:0
  • 历史总积分:7688
  • 注册:2008年3月16日
发表于:2008-05-08 13:53:15
4楼

每个扫描周期求和一次,整数相加,并计数N, N 不能太大,如OMRON取16,否则,整数求和会溢出, 较麻烦.

象楼主要求的3秒钟求和,就得改浮点累计求和.

 

二十四桥明月夜

  • 精华:3帖
  • 求助:0帖
  • 帖子:114帖 | 3593回
  • 年度积分:0
  • 历史总积分:7688
  • 注册:2008年3月16日
发表于:2008-05-08 14:06:37
5楼

设:采集单元V,先增三个单元:    累计单元E, 计数单元N,平均单元J;

并初始化:   V->J,   0->E    n->0

每个扫描周期:       E=E+V:N=N+1      IF (N>=16)   THEN   J=E/N:E=0:J=0 

J单元就是平均值,如果象楼主那样的N较大,E,N,J就设成浮点单元,

不要每个扫描周期都求和,得加个定时器,就这么简单。

未尽

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 57回
  • 年度积分:0
  • 历史总积分:122
  • 注册:2005年4月22日
发表于:2008-05-08 15:55:29
6楼

我们首先要明白:采集原始数据周期和统计数据周期是不同的概念!如根据数据统计的需要,我们需要1S统计一次数据,这个周期是统计数据周期,而为得到这个统计数据,一秒内我们可能采集众多的原始数据,采集众多的原始数据的周期是采集原始数据周期。一般情况下,采集原始数据周期越小,精度越高!下面是一般的方法:

1、将统计数据周期根据实际情况分为若干采集原始数据周期,一般20个左右很好了;

2、在每一个采集原始数据周期内采集原始数据,并保存下来;

3、根据实际需要设置一个精度,超出精度范围的丢弃;一般是将本次采集数据与上次采集数据比较,如差在精度范围内则保留,如超出精度范围则认为是尖波干扰,丢弃!

4、将剩下的有效数据进行算术平均处理,最终得到一次的统计数据。

 

爱在远方

  • 精华:0帖
  • 求助:1帖
  • 帖子:11帖 | 86回
  • 年度积分:0
  • 历史总积分:146
  • 注册:2005年5月20日
发表于:2008-05-09 08:47:10
7楼

首先谢谢“二十四桥”,如你所说用OMRON的AD恐怕是很难办到了,上面说的办法很不错,我会试一下,不过好像工作量比较大,应为我有几十个这样的数据要采集,这样的话我的处理速度和传输速度都有可能受到影响吧?

 

同时也谢谢“未尽”,你的办法应该跟“二十四桥”有异曲同工之妙,只是更精确一些,对程序设计是个指导性的框架

 

未尽

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 57回
  • 年度积分:0
  • 历史总积分:122
  • 注册:2005年4月22日
发表于:2008-05-09 11:20:01
8楼

首先谢谢“二十四桥”,如你所说用OMRON的AD恐怕是很难办到了,上面说的办法很不错,我会试一下,不过好像工作量比较大,应为我有几十个这样的数据要采集,这样的话我的处理速度和传输速度都有可能受到影响吧?

同时也谢谢“未尽”,你的办法应该跟“二十四桥”有异曲同工之妙,只是更精确一些,对程序设计是个指导性的框架
===================有几十个这样的数据要采集就没办法!呵呵,你不是针对每个数据采集都写一个程序吧!不是有子程序嘛,老兄!

小蝦米

  • 精华:0帖
  • 求助:0帖
  • 帖子:28帖 | 346回
  • 年度积分:0
  • 历史总积分:620
  • 注册:2006年5月12日
发表于:2008-05-09 11:43:40
9楼

能否将采集的数据放入寄存器,求平均.....

二十四桥明月夜

  • 精华:3帖
  • 求助:0帖
  • 帖子:114帖 | 3593回
  • 年度积分:0
  • 历史总积分:7688
  • 注册:2008年3月16日
发表于:2008-05-09 16:54:26
10楼

对于OMRON的卡具有求平均功能,我只是从技术角度提示一下,并不推荐使用OMRON的东西;

累加求平均的计算量很小,对PLC的速度不会影响,  就是几十个数据点也没关系,

每一个周期求几十个加法绝对不会影响速度.

 

 

 

爱在远方

  • 精华:0帖
  • 求助:1帖
  • 帖子:11帖 | 86回
  • 年度积分:0
  • 历史总积分:146
  • 注册:2005年5月20日
发表于:2008-05-21 10:15:38
11楼
“未尽“老兄,麻烦你可否用你的方法给一个简单的例子?对于200的子程序,参数设定及调用时参数的给定和输出在下也不是很懂,没有300的FC/FB那样的功能块简单直观。

工控之小子

  • 精华:0帖
  • 求助:0帖
  • 帖子:118帖 | 943回
  • 年度积分:0
  • 历史总积分:1732
  • 注册:2007年6月28日
发表于:2008-05-21 11:59:50
12楼
引用yikong 的回复内容:非常感谢楼主的无私奉献!



蓝天月亮

  • 精华:0帖
  • 求助:0帖
  • 帖子:37帖 | 1447回
  • 年度积分:0
  • 历史总积分:3594
  • 注册:2007年10月22日
发表于:2008-05-21 12:22:31
13楼
三菱的还多,跟据内部自定最大为4095次的平均值

热门招聘
相关主题

官方公众号

智造工程师