技术论坛

针对西门子流量累积总量很大后会不准问题。写了个累积fc块。保证了精度。

作者 主题
游民

经验值: 110
发帖数: 5
精华帖: 0
主题:【探讨】针对西门子流量累积总量很大后会不准问题。写了个累积fc块。保证了精度。
推荐帖


只看楼主 楼主 2021-08-03 16:28:27

不管是用300PLC还是博途1200或1500对于流量累积都会遇到累积数越大误差也会越来越大,直至累计数不动为止。这是因为浮点数在计算机中的存储机制造成的。


其实换个思路就可以解决这个问题,且能够很好的保证精度,就是将浮点数运算改为整数运算就可以完美解决这个问题。

可以看我图片。在ob30里设置循环时间为100ms,那么在fc块中计算时就除以36000.0  将整数和小数部分分别运算。完美解决。





 
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1708184&b_id=50

侠圣

经验值: 3596
发帖数: 303
精华帖: 2
回复:针对西门子流量累积总量很大后会不准问题。写了个累积fc块。保证了精度。
推荐帖


只看楼主 1楼 2021-08-03 16:45:37

西门子有标准的流量累计块,累计特精确,我都用好久了,参考连接

https://support.industry.siemens.com/cs/document/48799854/%E5%9C%A8step-7-(tia-portal)-%E4%B8%AD%EF%BC%8C%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E6%B5%81%E9%87%8F%E7%B4%AF%E7%A7%AF%E5%8A%9F%E8%83%BD%EF%BC%9F?dti=0&lc=zh-CN


只为成功找方法,不为失败找借口!
以下网友喜欢您的帖子:

  
侠圣

经验值: 2625
发帖数: 734
精华帖: 3
回复:针对西门子流量累积总量很大后会不准问题。写了个累积fc块。保证了精度。
推荐帖


只看楼主 2楼 2021-08-03 16:51:11

这个算法有问题,因为内涵了很多限制条件在里面。

1、整数部分必须小于99999;看来你应该发现了整数大到千万甚至亿级别就不好使了;

2、小数部分,处理也有问题,如果 瞬时流量每次都在0.00000001甚至更小,这个算法也没用;

可以再考虑下,论坛里面有很多人讨论过,你也可以借鉴下kahan算法。

另外,inout的方式,不如索性换成FB块的stat,程序封闭性更好。当然如果介意背景数据块太多也可以忽略。



 
以下网友喜欢您的帖子:

  
游民

经验值: 110
发帖数: 5
精华帖: 0
回复:针对西门子流量累积总量很大后会不准问题。写了个累积fc块。保证了精度。


只看楼主 楼主 3楼 2021-08-03 16:55:37
是我孤陋寡闻了。但如果流量计很多的话。DB块是不是就一堆呀。总是不愿意用FB块。喜欢用FC块。然后建一个DB块就够了。
 
以下网友喜欢您的帖子:

  
游民

经验值: 110
发帖数: 5
精华帖: 0
回复:针对西门子流量累积总量很大后会不准问题。写了个累积fc块。保证了精度。
推荐帖


只看楼主 楼主 4楼 2021-08-03 16:59:17

那个不是限于99999.到亿也没有问题,只要是在他的浮点数的取值范围内都可以呀。我是随便写的。。你也完全可以把那一段程序删掉呀。就是复位按钮也可以删掉不用呀。我感觉我这个思路是没有问题的。精度也是绝对没有问题的。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 24344
发帖数: 4846
精华帖: 6
回复:针对西门子流量累积总量很大后会不准问题。写了个累积fc块。保证了精度。


只看楼主 5楼 2021-08-03 17:05:29

 我做这样的累计都要声明:内部运算获得,仅供参考,涉及结算请以现场仪表累计为准。


谨慎低调
以下网友喜欢您的帖子:

  
奇侠

经验值: 9086
发帖数: 2334
精华帖: 30
回复:针对西门子流量累积总量很大后会不准问题。写了个累积fc块。保证了精度。


只看楼主 6楼 2021-08-03 21:33:21

双精度浮点数可以避免,


学习ing!学习!
以下网友喜欢您的帖子:

  
版主

经验值: 69053
发帖数: 12266
精华帖: 59
回复:针对西门子流量累积总量很大后会不准问题。写了个累积fc块。保证了精度。
推荐帖


只看楼主 7楼 2021-08-03 21:55:17

如果不要求精度那么高,比如一天能用好几万立方的流量

先做个比如1W的流量累积,每次大于1万的时候,用双整数就增加1,这样累积的值就超大了~


Q群:https://jq.qq.com/?k=9BDuEgf6
以下网友喜欢您的帖子:

  
新手

经验值:
发帖数:
精华帖: 3
回复:针对西门子流量累积总量很大后会不准问题。写了个累积fc块。保证了精度。


只看楼主 8楼 2021-08-03 22:00:42

既然发在了1200版区,那干嘛不用LREAL呢


 
以下网友喜欢您的帖子:

  
版主

经验值: 76240
发帖数: 19148
精华帖: 378
回复:针对西门子流量累积总量很大后会不准问题。写了个累积fc块。保证了精度。


只看楼主 9楼 2021-08-03 22:01:22

1200/1500的直接用双精度浮点数就是了,想当年还用16位单元做累计呢,都过去了,与时俱进吧,算不上什么了


Zane 注册自动化系统工程师 Always save before download
以下网友喜欢您的帖子:

  
游民

经验值: 110
发帖数: 5
精华帖: 0
回复:针对西门子流量累积总量很大后会不准问题。写了个累积fc块。保证了精度。


只看楼主 楼主 10楼 2021-08-04 12:11:24
受教了。没有考虑双精度浮点数。。。
 
以下网友喜欢您的帖子:

  
侠圣

经验值: 3818
发帖数: 834
精华帖: 3
回复:针对西门子流量累积总量很大后会不准问题。写了个累积fc块。保证了精度。


只看楼主 11楼 2021-08-04 12:36:14

双精度浮点数数值范围,完全可以满足累积要求,流量仪表自己累积数值也是有一个最大数值的


路漫漫其修远兮,吾将上下而求索!!!
以下网友喜欢您的帖子:

  
游侠

经验值: 493
发帖数: 73
精华帖: 0
回复:针对西门子流量累积总量很大后会不准问题。写了个累积fc块。保证了精度。


只看楼主 12楼 2022-03-31 07:40:09

感谢分享,其实运算过程我一般用定时中断去做


 
以下网友喜欢您的帖子:

  
至圣

经验值: 15085
发帖数: 2860
精华帖: 0
回复:针对西门子流量累积总量很大后会不准问题。写了个累积fc块。保证了精度。


只看楼主 13楼 2022-03-31 08:40:09
以下是引用铁面判官在2021-08-03 16:45:37的发言 >1楼

西门子有标准的流量累计块,累计特精确,我都用好久了,参考连接

https://support.industry.siemens.com/cs/document/48799854/%E5%9C%A8step-7-(tia-portal)-%E4%B8%AD%EF%BC%8C%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0%E6%B5%81%E9%87%8F%E7%B4%AF%E7%A7%AF%E5%8A%9F%E8%83%BD%EF%BC%9F?dti=0&lc=zh-CN

step7中有没有类似的功能块?


 
以下网友喜欢您的帖子:

  
侠圣

经验值: 3818
发帖数: 834
精华帖: 3
回复:针对西门子流量累积总量很大后会不准问题。写了个累积fc块。保证了精度。


只看楼主 14楼 2022-03-31 09:36:09

累计误差在所难免,要想准确通讯读取把

遇到过好多客户要求,瞬时流量通过4-20MA传到PLC,累计流量PLC做累计,显示有偏差,但是必须要求完全一样,后来流量计+通讯了。

另外就是这个流量累计PLC做感觉还不如积算仪准确。



路漫漫其修远兮,吾将上下而求索!!!
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
针对西门子流量累积总量很大后会不准问题。写了个累积fc块。保证了精度。
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。