请教大家一下:
我现在使用ST30和4通道模拟量采集模块采集压力传感器的值。为了呈现在上位机上的压力值曲线更加光滑,我需要在ST30中对压力值进行去毛刺值处理。我想采用类似迭代计算方法,将采集到的10个连续压力值存放在某一段寄存器中,每当有1个新采集值需要存入时,就按照先进先出的方式替换这10个值中的首个值,每一次替换时就计算这10个值的平均值,并将平均值数据上传上位机。如此循环往复。请大家给我一些思路,如何来编写?之前我曾经考虑用填表指令中的FILL_N填表指令,但是这是针对字(word)的操作,浮点数(real)就不能用了。。。
最佳答案
正如你所说,当是浮点数是,浮点数是2个字。也是可以用表格指令的。注意以下几点:
1、上电初始化时,将浮点数累加和初始化为 0.0;
2、如果要10个浮点数的空间,则表格所占用的连续字空间大小为:10*2+2=22个字。
3、每个扫描周期:
A、累加和加上此扫描周期浮点数;
B、将浮点数的高低字,用两个AD_T_TBL 连续存入表格。
C、当表格的元素数到 20 时,就表明已有10个有效值了。
此时
C1、累加和除以10.0得平均值;
C2、用两次 FIFO 指令取出最先进去的浮点数,注意高低字顺序;
C3、累加和减去取出的浮点数。.
http://www.ad.siemens.com.cn/productportal/Prods/s7-200-smart-portal/200SmartTop/programming/table/table.html
提问者对于答案的评价:
非常感谢大家的无私帮助,我获益匪浅!
通过2次连续添表指令可以实现实数vdxx存储进表内,比如实数vd1004放入表格vw2000中时,实际PLC操作会将vw1004存入vw2004,vw1006存入vw2006,检查浮点数vd2004=vd1004,以此类推。
同样通过2次连续先进先出指令可以实现实数vdxx移出表格。比如实数vd2004从表格vw2000中时,实际PLC操作会将vw2004移入vw3000,vw2006移入vw3002,以此类推。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc280203.html