现在有一4-20ma的信号,输入到200系列的输入扩展模块中,对应量程0-800,要对这个信号求均值,采样时间500毫秒,采样周期5分钟,也就是说在5分钟的时间内要采样600次,然后求出这600次的平均值并在人机介面显示,那位朋友能给个方案,谢谢。
问题补充:
谢谢个位的回答,补充几点:
1,我个人倾向于子程序的方案,这个方案和样本里的例程思路是一致的,可是在做除法时采用移位方式如何确定移位数,
2,500mS的时钟,加上时钟间隔,哪5分钟就不是600次啦。
3,最大的问题是我在编程软件中的程序控制指令中竟然没有找到call指令,我使用的软件为step7-microv4.0sp6
4为何要除7200哪,如果以分钟为单位,该除多少那。
最佳答案
东方学人:根据您提的问题我编制一段程序,完全能瞒足您的要求,每500ms从AIW0通道采集一次模拟信号,并累加一次,5分钟累加600次。在500ms中每次采集数据、计算、数据转换、数据存储都可完成,没有时间间隔。5分钟600次采集数据的平均值存放在VD108存储器中,可以送到任何人机界面显示出来。本系统500ms采集一次,即每500msT32导通时,M10.1置位上升沿采集数据一次,采集数据计数加1;并且M10.1置位100ms来处理采集数据,时间够用了。程序有注释便于您理解,程序如下:
网络1
LD SM0.1
MOVW 0, VW100 //开机时VW100清零
MOVW 0, VW10 //开机时VW10清零
网络2
LD SM0.0
LPS
AN M10.0
TON T32, 500 //1ms定时器,设置500ms
LRD
A T32
= M10.0 //M10.0与T32组成500ms脉冲开关
S M10.1, 1 //每500msM10.1导通100ms
LRD
AW>= T32, 100 //当T32大于或等于100ms导通
R M10.1, 1 //M10.1复位
LRD
A M10.1
LPS
EU //M10.1导通上升沿
+I AIW0, VW100 //对I0.0通道采集信号每500ms累加一次
+I 1, VW10 //采集信号每累加一次VW10中数值加1
LPP
ITD VW100, VD104 //累加值转为双整数
DTR VD104, VD104 //累加值转位实数
AW>= VW10, 600 //当VW10=600时,即采集信号累加600次导通
EU //上升沿
MOVR VD104, VD108
/R 600.0, VD108 //600次采集信号的平均值保存到VD108存储器
MOVW 0, VW100 //vw100清零以便下一周期采集信号
MOVW 0, VW10 //VW10清零以便下一周期累计采集次数
东方探索
提问者对于答案的评价:
谢谢大家的回答,选择东方探索的回答基于以下的原因:
1,对于时钟问题给了我很大的启发,
2,在这个问题里数型转换很重要,他谈到了,
3,有例程,在这里谢谢了,我会参考的。
几点说明:
1,本回答中有一点可能需要商榷,即600个采样值累加完后好像不能直接输出做均值,应该除以600或采取移位除(移位数为采样数的2次方),希望能和你做进一步的探讨QQ1037249228,
2对于推荐循环程序的朋友们,我仔细看了你们推荐的程序,有2个问题,一是那些数是已知的,二是数应该是由小到大排列,而我的数据是实时的,大小是随机的。
再一次谢谢大家
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc314208.html