如何用STEP7做一个模拟量平均值 点击:5529 | 回复:15



yyght

    
  • 精华:1帖
  • 求助:0帖
  • 帖子:176帖 | 821回
  • 年度积分:0
  • 历史总积分:1549
  • 注册:2005年3月21日
发表于:2012-03-12 07:37:01
楼主
请教大家一个问题。我现在碰到一个问题,如果用西门子PLC400 STEP7 V5。4做一个模拟量的平均值,比如一个温度的值是跳动了,在200度左右跳动,我如何编一个程序做在一分钟之内的平均值。谢谢


楼主最近还看过



miy_gongkong

  • 精华:0帖
  • 求助:2帖
  • 帖子:27帖 | 3065回
  • 年度积分:0
  • 历史总积分:12427
  • 注册:2008年9月18日
发表于:2012-03-12 09:26:36
1楼

用2个 定时器采样, 即可实现. 

1个设置为 100ms, 另一个设置为 1S,这样把 10次采样的置相加 除以10既是 要的平均值了!

 

yyght

  • 精华:1帖
  • 求助:0帖
  • 帖子:178帖 | 821回
  • 年度积分:0
  • 历史总积分:1549
  • 注册:2005年3月21日
发表于:2012-03-12 11:53:39
2楼

这样也不能实现,当第十一秒的时候我要求计算第2-----第十一秒的平均值,,当第十二秒的时候我要求计算第3秒---第12秒的平均值

东方菜

  • 精华:0帖
  • 求助:4帖
  • 帖子:23帖 | 45回
  • 年度积分:0
  • 历史总积分:284
  • 注册:2002年5月13日
发表于:2012-03-16 16:33:06
3楼
首先要建立1个队列,然后计算队列里10个数的平均值

wingwf2000

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 455回
  • 年度积分:0
  • 历史总积分:1000
  • 注册:2008年1月09日
发表于:2012-04-02 19:02:28
4楼

如果每个周期采集的数据都参与平均值计算是否也可以?

设Bn为前n个数据的平均值,则前n+1个数据的平均值是

B(n+1)=Bn+【A(n+1)-Bn】/(n+1),其中B0=0

其中A(n+1)是第n+1个周期的采样值

结果是

B0=0

B1=A1

B2=B1+【A2-B1】/2=A1+【A2-A1】/2=【A1+A2】/2

B3=B2+【A3-B2】/3=【A1+A2+A3】/3

....

Bn=【A1+A2+...+An】/n

 

yimy

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 30回
  • 年度积分:0
  • 历史总积分:283
  • 注册:2009年2月26日
发表于:2012-04-05 14:20:58
5楼
我做过一个水泵每小时启动次数限制的程序,启动次数多于五次就报警,低于五次正常,和这个有点象。做一个数组,每次采集的数据放在最后一个里面,前面的循环前移一个位置,长度做成一分钟,最后把数组里面的每个数字加起来除以个数,应该就行了

jiaoanpeng——王者之师

  • 精华:44帖
  • 求助:3帖
  • 帖子:372帖 | 15621回
  • 年度积分:0
  • 历史总积分:78595
  • 注册:2006年7月25日
发表于:2012-04-05 14:53:49
6楼

不知这个程序与模拟量的累加有多大的差异,现场使用的流量计要进行累积时需要进行累加

smallbox

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 6回
  • 年度积分:0
  • 历史总积分:46
  • 注册:2010年6月18日
发表于:2012-04-09 10:58:04
7楼

使用SCL语言编写这个程序最简单:

1) 在中断里面添加FB块。  100ms中断一次

2) 采样10次,算平均值。可以采用FIFO方式。

彩云之滇东北

  • 精华:37帖
  • 求助:5帖
  • 帖子:148帖 | 2725回
  • 年度积分:0
  • 历史总积分:21121
  • 注册:2005年6月14日
发表于:2012-04-09 11:28:48
8楼

也可以在OB35里面做,ob35每100ms执行一次,通过一个如mw20计算累加次数,将每100ms采集的模拟量累加起来放入md24,达到要求的次数如10次(相当于1秒)后给出一个扫描周期的m1.0,m1.0有了将md24/mw20(注意mw20的需dtr数据类型转换),算出的值按照堆栈方式将结果存入一个数据库中保存起来,完成后将mw20和md24重新赋初值0和0.0。再用一个条件控制需要采集数据的次数或者时间,即可完成该项目。

miy_gongkong

  • 精华:0帖
  • 求助:2帖
  • 帖子:27帖 | 3065回
  • 年度积分:0
  • 历史总积分:12427
  • 注册:2008年9月18日
发表于:2012-04-09 11:33:24
9楼

引用 yyght 的回复内容:这样也不能实现,当第十一秒的时候我要求计算第2-----第十一秒的平均值,,当第十二秒的时候我要求计算第3秒---第12秒的平均值
---------------------------------------

可以实现啊,  你用2 个定时器, 一个总时长 定时器例如 1S , 一个 采样定时器例如100ms , 当1S 到时就计算平均值 ,下一次开始采样 , 把 前面的 10个 采样数据 覆盖掉, 总时长定时器 动作,计算平均值 循环下去 !

彩虹

  • 精华:2帖
  • 求助:4帖
  • 帖子:61帖 | 1626回
  • 年度积分:0
  • 历史总积分:7588
  • 注册:2006年9月21日
发表于:2012-04-14 21:16:39
10楼

其实这个程序西门子资料库里就有只需复制过来调用就可以了不用自己编写!

彩云之滇东北

  • 精华:37帖
  • 求助:5帖
  • 帖子:148帖 | 2725回
  • 年度积分:0
  • 历史总积分:21121
  • 注册:2005年6月14日
发表于:2012-04-18 11:22:00
11楼

试试去                                                    

大话东游

  • 精华:2帖
  • 求助:6帖
  • 帖子:46帖 | 1815回
  • 年度积分:0
  • 历史总积分:8255
  • 注册:2008年12月19日
发表于:2012-04-18 12:21:26
12楼
平均值怎么算啊?        

firepoint0

  • 精华:0帖
  • 求助:0帖
  • 帖子:11帖 | 50回
  • 年度积分:0
  • 历史总积分:641
  • 注册:2010年11月10日
发表于:2012-04-18 13:49:54
13楼

回复内容:
对:彩虹关于其实这个程序西门子资料库里就有只需复制过来调用就可以了不用自己编写!内容的回复:



哪里有 需要下载吗

 

彩虹

  • 精华:2帖
  • 求助:4帖
  • 帖子:61帖 | 1626回
  • 年度积分:0
  • 历史总积分:7588
  • 注册:2006年9月21日
发表于:2012-04-19 06:20:36
14楼
我这里有原来在西门子下载的,现在不记得下载地址了。

cg_com

  • 精华:0帖
  • 求助:1帖
  • 帖子:4帖 | 39回
  • 年度积分:0
  • 历史总积分:245
  • 注册:2008年10月13日
发表于:2012-04-19 07:37:09
15楼
如果只是一个模拟值跳动,试一下用PID

热门招聘
相关主题

官方公众号

智造工程师