流量中断累加问题

现在想用s7-400采集流量,4-20mA电流信号,想在OB35中断中做流量累加,问题如下:1  中断周期设置为多长时间比较合理   2  中断里做加法,如果出现存储单元超限溢出,该怎么处理,希望能提供个处理思路   3 我用的是浮点数加法,加到一定程度会出现数量级不同,因为精度问题无法继续累加,应该怎么处理?望大家指点!谢谢

最佳答案

其实有现成的流量累积的功能块,楼主可以参考:
http://support.automation.siemens.com/CN/llisapi.dll?query=totalize&func=cslib.cssearch&content=adsearch%2Fadsearch.aspx&lang=zh&siteid=cseus&objaction=cssearch&searchinprim=0&nodeid0=4000024
1  中断周期设置为多长时间比较合理
理论上越短越高,这样精度越高,当然最短支持多少与楼主采用的中断和PLC支持的中断有关系。也和流量变化的快慢有关。很多人用1s的中断,其实主要是计算方便一些而已。如果楼主的流量变化较快,建议采用更短的时间,如100ms、200ms或500ms。
2  中断里做加法,如果出现存储单元超限溢出,该怎么处理,希望能提供个处理思路
楼主应该做个域值,即超过这个域值后,当前流量应该自动从0继续累积。而达到域值的次数存储都另一个地址中。这样总流量为:域值*次数+当前流量。域值设小点,就不会出现溢出的现象。
3 我用的是浮点数加法,加到一定程度会出现数量级不同,因为精度问题无法继续累加,应该怎么处理?望大家指点!谢谢 
为什么为出现无法继续累加的现象,是因为从计算方法来说,存在“大数吃小数”的现象,即PLC中浮点数数据中保留的数据精度一般为7个数字,如0.123456,如果楼主每次的流量太小,如0.0000001,相加后由于PLC的精度只能保留7位数据,因此流量就不会在继续累计了。
解决方法是为了保证精度,设一个较小的域值,这样在域值范围内永远不会出现丢数据的现象。而对于总的流量来说在SCADA显示时,把上述两个数据都送上去然后来显示,SCADA显示的精度就不用说了,因此,上述问题就不存在了。

提问者对于答案的评价:
谢谢

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc248326.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月2日 下午4:04
下一篇 2018年12月2日 下午4:04

相关推荐