想法:每隔一个固定的时间段(10s)采集一次模拟量的数值,采集100次,将这100次的数值求平均值,把结果写入一个指定地址,重复循环。
我的思路:利用OB35,周期中断,设定一个时间10s,利用西门子的STEP7Average,这个功能块,中断一次,累加一次,累加值等于100的时候,开始求平均值。
我将STEP7Average这个功能块fb1做了以下修改,就是增加了一个累计次数的判断。但是没有达到我预期的功能,请问各位,我具体错哪里了。
另外,我想弄清楚概念,OB35的周期中断。我理解是,ob35的程序,每隔设定的时间就扫描执行一次,是不是这样的。谢谢各位高人,最好有注释的实例,我查过不少这方面的资料,说的很含糊。
问题补充:
zhangli0老师,你的程序我明白什么意思,可是我利用你的程序试了一下,程序运行,AVER直接显示就是模拟量/100的结果,一直不变,请问怎么回事。我实在看不出程序哪里有问题。
另外,阿鸣老师,你提供的资料我也看过,我就是想有个程序实例,学习一下
图片说明:
最佳答案
没有看明白你的程序,我给你写一个吧,ob35,周期10s
LPV//测量值
LSUM//累计值
+R
TSUM
LCOUNT//计数
L1
+I
TCOUNT
L100
>=I
JCNM1
LSUM
L100.0
/R
TAVER//平均值
L0
TCOUNT
L0.0
TSUM
M1:NOP0
补充:我的程序是纯手打的,原来的程序求完平均值后累积值没有清零,现在求完平均值后累计值清零再重新累积就好了。
提问者对于答案的评价:
zhangli0老师,感谢你的补充,不过问题仍是没有解决,感觉对输入值没有累积。在此还要感谢回答我问题的各位老师,谢谢
专家置评
已阅,最佳答案正确。如果对需要保存每次记录的值,则需要使用地址寄存器AR1或AR2来进行指针偏移。