技术论坛

【探讨】S7-300/400 PLC 流量累积问题

作者 主题
侠圣

经验值: 4940
发帖数: 790
精华帖: 12
主题:【探讨】【探讨】S7-300/400 PLC 流量累积问题


只看楼主 楼主 2020-12-12 21:37:21

       在做流量累积的时候,当流量累积到很大的时候, 这个时候如果瞬时流量很小,那么就会出现不能累加的现象。

         这个是西门子S7- 300和S7-400 PLC浮点数运算有效数的问题。

          例如:   MD0 =  0.01

                       MD4  =  2422653.0

          然后:

                       MD4 = MD4 + MD0   

           这个时候,无论怎么加, MD4 就是不会增大。


   有人遇到这个问题没有, 有没有好的方法避免这个问题。

   不能清零, 就是不要将MD4= 0 这个步骤。

   因为清零,数据从零开始累积,可以累积的,但是累积到一个比较大的数值时,又会出现不能增大的情况。


获取资料关注:https://www.cnblogs.com/volcanol/
以下网友喜欢您的帖子:

  
重要声明:

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

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1657336&b_id=4&s_id=0&num=11

侠圣

经验值: 4940
发帖数: 790
精华帖: 12
回复:【探讨】S7-300/400 PLC 流量累积问题


只看楼主 楼主 1楼 2020-12-13 10:19:29
获取资料关注:https://www.cnblogs.com/volcanol/
以下网友喜欢您的帖子:

  
侠圣

经验值: 4940
发帖数: 790
精华帖: 12
回复:【探讨】S7-300/400 PLC 流量累积问题


只看楼主 楼主 2楼 2020-12-13 22:59:55

没人遇到这个问题吗?


有没有好的办法呢???


获取资料关注:https://www.cnblogs.com/volcanol/
以下网友喜欢您的帖子:

  
至圣

经验值: 13022
发帖数: 1815
精华帖: 22
回复:【探讨】S7-300/400 PLC 流量累积问题


只看楼主 3楼 2020-12-14 16:19:53

       有个思路,不一定合理:数据的来源如果是模拟量可以整数直接转双整数后用双整数甚至是将源数据放大N倍的双整数参与运算(N倍数的选取根据实际情况体现相对精度和置信度),考虑计圈,掉电保持等;如果是通讯或其它方式同样可以将浮点数放大到没小数点或者有的累计整数,有的累计放大的小数部分;或者嫌运算量麻烦采用浮点数累计到某个远未超限的浮点数定值就计圈进位。


 
以下网友喜欢您的帖子:

  
侠士

经验值: 1751
发帖数: 379
精华帖: 0
回复:【探讨】S7-300/400 PLC 流量累积问题


只看楼主 4楼 2020-12-14 16:49:16

没有遇到过这个情况,这个是两个加数其中一个很大造成的吗。希望楼主解决了能再说明下问题原因


路漫漫其修远
以下网友喜欢您的帖子:

  
奇侠

经验值: 8877
发帖数: 2002
精华帖: 12
回复:【探讨】S7-300/400 PLC 流量累积问题


只看楼主 5楼 2020-12-14 23:16:03

两种方式来解决他,一个是取整加法,就是每次累加只截取整数部分,剩下的小数部分累积到下一次,最后的结果是一个整数,就不会有舍掉的问题;另一种方式是递进,用A和B来表示的话就是每次都跟B做累加,当B大于10000(也可以是其他数值,根据需要设定)时给A加10000,给B减10000,最后结果=A+B,这样B不会大于10000,可保证小数点后3位精度。


污水处理自控工程师,简称污师。
以下网友喜欢您的帖子:

  
侠圣

经验值: 4940
发帖数: 790
精华帖: 12
回复:【探讨】S7-300/400 PLC 流量累积问题


只看楼主 楼主 6楼 2020-12-15 18:00:06
以下是引用holdkcsxyz在2020-12-14 16:19:53的发言 >3楼

       有个思路,不一定合理:数据的来源如果是模拟量可以整数直接转双整数后用双整数甚至是将源数据放大N倍的双整数参与运算(N倍数的选取根据实际情况体现相对精度和置信度),考虑计圈,掉电保持等;如果是通讯或其它方式同样可以将浮点数放大到没小数点或者有的累计整数,有的累计放大的小数部分;或者嫌运算量麻烦采用浮点数累计到某个远未超限的浮点数定值就计圈进位。

这个思路有点类似于多圈编码器的做法。

原理上是可行的。


获取资料关注:https://www.cnblogs.com/volcanol/
以下网友喜欢您的帖子:

  
侠圣

经验值: 4940
发帖数: 790
精华帖: 12
回复:【探讨】S7-300/400 PLC 流量累积问题


只看楼主 楼主 7楼 2020-12-15 18:02:14
以下是引用CCC@CCC在2020-12-14 16:49:16的发言 >4楼

没有遇到过这个情况,这个是两个加数其中一个很大造成的吗。希望楼主解决了能再说明下问题原因

原因就是西门子300/400 PLC浮点数的精度问题, 当微小量与大值相加的时候,就会出现这个问题。

当微小值在有效数范围之外的时候就会出现这个问题。


获取资料关注:https://www.cnblogs.com/volcanol/
以下网友喜欢您的帖子:

  
侠圣

经验值: 4940
发帖数: 790
精华帖: 12
回复:【探讨】S7-300/400 PLC 流量累积问题


只看楼主 楼主 8楼 2020-12-15 18:06:57
以下是引用will666在2020-12-14 23:16:03的发言 >5楼

两种方式来解决他,一个是取整加法,就是每次累加只截取整数部分,剩下的小数部分累积到下一次,最后的结果是一个整数,就不会有舍掉的问题;另一种方式是递进,用A和B来表示的话就是每次都跟B做累加,当B大于10000(也可以是其他数值,根据需要设定)时给A加10000,给B减10000,最后结果=A+B,这样B不会大于10000,可保证小数点后3位精度。

谢谢提供两个都不错的思路。

我自己实现了一个用的与第二种方式类似的方法。


按照你说的方式:

B = 瞬时值的累加

IF B> 10000.0 THEN

    A = A + 10000.0

    B  = B - 10000.0

END 

真实累加值 = A + B;这种方式比较直接。

但是这种方法最多也只能到1.0e+7  就是一千万, 如果超过1千万,那么还是会存在问题。

也就是说到一千万以上的累积量,那么还是必须自动清零,然后重新计算。

不过一般的工程应用应该差不多了, 我这边累积大约一个月会到百万级别, 也就是说大约半年到一年才会需要自动清零一次。




获取资料关注:https://www.cnblogs.com/volcanol/
以下网友喜欢您的帖子:

  
侠圣

经验值: 4511
发帖数: 522
精华帖: 0
回复:【探讨】S7-300/400 PLC 流量累积问题


只看楼主 9楼 2020-12-15 21:01:01

这个是要看计量精度,数值太小应该忽略也正常。


孜孜不倦,向高峰挺进!
以下网友喜欢您的帖子:

  
至圣

经验值: 43597
发帖数: 15780
精华帖: 61
回复:【探讨】S7-300/400 PLC 流量累积问题


只看楼主 10楼 2020-12-16 10:51:25

提问题前,先搜索,这个问题早就在论坛上说过如何解决了。

因为累加器的有效数字位只有7位,实数相加是先指数对齐,相加的时候如果两个数相差超过10^7,那么指数对齐后,小的数的数字都变成0了,随意就不会累加了。解决方法就是多次累加。

sum=sum+pv

sum>sum_sp,则sum1=sum1+sum,sum=0

sum1>sum1_sp,则sum2=sum2+sum1,sum1=0

........................

最终累计值就是sum+sum1+sum2+............,所有的sum和。


活到老,学到老!为了生活学习吧!
以下网友喜欢您的帖子:

  
侠圣

经验值: 4940
发帖数: 790
精华帖: 12
回复:【探讨】S7-300/400 PLC 流量累积问题


只看楼主 楼主 11楼 2020-12-18 19:19:40
以下是引用不枉此生在2020-12-15 21:01:01的发言 >9楼

这个是要看计量精度,数值太小应该忽略也正常。

也不能这样说的。

例如  70立方米/分钟

 算起来每秒就很小,当累加值超过100万的时候,累积就有问题了。 

但是 70立方米/分钟,一个小时就是 4200多以上, 时间久了,就误差很大了,所以也不能完全忽略。


获取资料关注:https://www.cnblogs.com/volcanol/
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
【探讨】S7-300/400 PLC 流量累积问题
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。