S7-200 SMART 模拟量数据处理

请教大家一下:
我现在使用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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年10月30日 下午9:49
下一篇 2020年10月30日 下午9:49

相关推荐