现须要在一个周期内(600MS),连续模拟量输入采样60次,并得出一个平均值,请问如何处理。请各位高手帮忙编一个程序。(我现在的思路是,使用一个10MS的时间中断,在中断程序中每10MS将采样值放入一个V存储器中,最后将60个采样的值相加,除以60,此程序太长,放在中断程序中不合适)
问题补充:
如果没有前60个采样值,怎么除以60是平均值呢,请教一下具体是怎么做的呢。能否帮忙发下程序。(是否须要指针)
最佳答案
给你一个建议,如果你不需要记录每个采样的值是多少的话,你就在中断里面做一个累加的程序嘛,比如采样值是放在VD100中的,比如公式VD200=VD100(采样值)+VD200,然后做一个中断执行的次数计数,记到60次的时候就把第60次后VD200的值除以60就是平均值啦,同时把VD200和计数器清零,再进行下一轮采样与计算,这样做就会很简洁啊。
问题补充回答:
我是这样理解的,比如你要采集AIW0的值,用10ms的 中断,中断每次执行的时候对应的肯定就是当前的aiw0的值,我的意思是,如果你不需要记录每一个值而只需要知道这60个值得平均值得话就可以这样做。那么前59次执行的时候只需要将每次的值与前面所有的值加起来就行了啊,直到60次的时候就可以产生一个平均值。不过这样做的坏处就是每600ms才能产生一个平均值,而不是每次采样都能产生一个新平均值。你自己斟酌下看。如果要每次都产生新平均值得话就只能利用200系列的“表”的功能了,建一个60个数据的表,当满了后,新值来了会把最老的那个值挤出去舍弃。
提问者对于答案的评价:
非常感谢回答,要是有示例就好了。
专家置评
已阅,最佳答案正确。
计算累积流量通常就是这种方法
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc209963.html