发布网友 发布时间:2022-04-26 07:07
共4个回答
热心网友 时间:2022-06-25 02:14
楼主,我的思路是这样的:1、比如你的原始数据存放在DB2.DBD0里面,每个周期累加这个原始数据,并保存到DB2.DBD4里面;2、同时对累加次数计数,计数结果存放在DB2.DBD8里面;3、等1s循环时间中断OB3x事件到来时,在这个OB3x里面,用DB2.DBD4除以DB2.DBD8,这个平均值放入DB2.DBD12里面(这就是你需要的1s后数据采集的平均值);4、然后在OB3x里面清空累计数据、累计次数。呵呵......周而复始如此这般执行,应该能满足楼主的要求!按照上面的思路写了点代码给楼主参考(本人没有测试,楼主可以测试一下):热心网友 时间:2022-06-25 02:15
你把你的这个程序fc放在ob35等中断块中调用,如果ob35的周期是100ms,用一个db保存数据db定义数组变量0~10,然后fc中用指针,把db的后一个数据保存在前一个地址中,最后一个地址插入新的数据,然后把前面的数据累加除以10就是你的平均值。参考下面的程序:TAR1#temp_ar1TAR2#temp_ar2LP##db_noLAR1LW[AR1,P#0.0]T#db_idOPNDB[#db_id]LAR1P#0.0TAR1#ar1data1+AR1P#4.0TAR1#ar1data2TAR1#temp_ar1TAR2#temp_ar2LAR1P#808.0TAR1#ar1data1+AR1P#4.0TAR1#ar1data2_0a5:LDBD[#ar1data1]L#ZQFLUX_SUM+RT#ZQFLUX_SUMLAR1#ar1data1+AR1P#4.0TAR1#ar1data1+AR1P#4.0TAR1#ar1data2L1LDBW1616+ITDBW1616L99<=IJCNmm5LOOP_0a5mm5:L#ZQFLUX_SUML1.000000e+002/RT#zqflux_averL0TDBW1616LAR1#temp_ar1LAR2#temp_ar2SETSAVEBEU热心网友 时间:2022-06-25 02:15
程序段1:MW0为需采集的数据,MW2为第为第一次采集的数据,MW4为第二次采集的数据,MW6为第三次采集的数据***三个MOVE的顺序***不可以颠倒A(A(LMW4TMW6SETSAVECLRABR)JNB_001LMW2TMW4SETSAVECLR_001:ABR)JNB_002LMW0TMW2_002:NOP0程序段2:MW12为采集数据的平均值A(A(LMW2LMW4+ITMW8ANOVSAVECLRABR)JNB_003LMW8LMW6+ITMW10ANOVSAVECLR_003:ABR)JNB_004LMW10L3/ITMW12_004:NOP0热心网友 时间:2022-06-25 02:16
你的程序简直是无法看。你能做成附件吗?你的初衷肯定不是让大家看天书吧!这不是zhangli0坛友的错,把正常的程序贴出来后就会这样,不信你自己试试