找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
问题
取消精华
首页精华问答
取消推荐
高端用户推荐
申请置评
已申请置评
修改
修改标签
添加标签
官方认证
取消官方认证
修改标签
添加标签
转移分类
删除
{{itemCategory}}
收藏({{answerDetail.Q_FavoriteCounts}})
手机扫码追踪该问题,
觉得实用,立即去分享!
点击复制链接
专家建议
取消最佳答案
修改
其实有现成的流量累积的功能块,楼主可以参考:
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显示的精度就不用说了,因此,上述问题就不存在了。
等您来回答
换一换
{{item.CoinValue}}西币
{{item.VisitNum}}人想问
本版相关问题
换一换
专家置评
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!

西门子商城