技术论坛

请问一下各位老师,我这个累计流量的子程序这样存在不存在问题??流量计是立方米每小时

作者 主题
游民

经验值: 95
发帖数: 9
精华帖: 0
主题:【求助】请问一下各位老师,我这个累计流量的子程序这样存在不存在问题??流量计是立方米每小时


只看楼主 楼主 2019-12-05 11:53:45


上面的这块是子程序当中的内容


上面这是我调用子程序,vd684和vd688是累计值



 
以下网友喜欢您的帖子:

  
重要声明:

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

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

至圣

经验值: 72012
发帖数: 8043
精华帖: 145
回复:请问一下各位老师,我这个累计流量的子程序这样存在不存在问题??流量计是立方米每小时


只看楼主 1楼 2019-12-05 12:01:17

子程序这样可以的。

建议实参地址设置为保持型寄存器地址。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 67551
发帖数: 14784
精华帖: 100
回复:请问一下各位老师,我这个累计流量的子程序这样存在不存在问题??流量计是立方米每小时


只看楼主 2楼 2019-12-05 12:10:12

有问题的。sm0.5什么用的?


 
以下网友喜欢您的帖子:

  
至圣

经验值: 67551
发帖数: 14784
精华帖: 100
回复:请问一下各位老师,我这个累计流量的子程序这样存在不存在问题??流量计是立方米每小时


只看楼主 3楼 2019-12-05 12:22:09

逻辑有问题。你加完的结果又回去重复加,为什么?10+1=11;11+1=12;12+1=13;14;15;16;17……有什么意义?

运行结构有问题。0.5不接通的时候输出是什么值?你猜?你依据什么猜的?


 
以下网友喜欢您的帖子:

  
至圣

经验值: 72012
发帖数: 8043
精华帖: 145
回复:请问一下各位老师,我这个累计流量的子程序这样存在不存在问题??流量计是立方米每小时


只看楼主 4楼 2019-12-05 12:29:32

我的意思是实参地址设置为保持型寄存器地址。

回2楼季侠:

在子程序中定义sm0.5没有异议啊,楼主的含义是每秒钟时间段累加。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 72012
发帖数: 8043
精华帖: 145
回复:请问一下各位老师,我这个累计流量的子程序这样存在不存在问题??流量计是立方米每小时


只看楼主 5楼 2019-12-05 12:30:43

如果,担心这1秒钟时间段的流量变化大,可以适当修改这个录入流量时间。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 67551
发帖数: 14784
精华帖: 100
回复:请问一下各位老师,我这个累计流量的子程序这样存在不存在问题??流量计是立方米每小时


只看楼主 6楼 2019-12-05 12:34:54

我看你是半秒计半秒不计。

计的半秒都不知道计了几百次了,而不是你想象的一次。

回复请用回复栏。


 
以下网友喜欢您的帖子:

  
游民

经验值: 95
发帖数: 9
精华帖: 0
回复:请问一下各位老师,我这个累计流量的子程序这样存在不存在问题??流量计是立方米每小时


只看楼主 楼主 7楼 2019-12-05 13:13:18
以下是引用芳季在2019-12-05 12:34:54的发言 >6楼

我看你是半秒计半秒不计。

计的半秒都不知道计了几百次了,而不是你想象的一次。

回复请用回复栏。

我明白了,这样说不可以的,那个累加就会半秒内不停的加,而不是一秒一次。还有一个是子程序里面写sm没意义?


 
以下网友喜欢您的帖子:

  
至圣

经验值: 67551
发帖数: 14784
精华帖: 100
回复:请问一下各位老师,我这个累计流量的子程序这样存在不存在问题??流量计是立方米每小时


只看楼主 8楼 2019-12-05 18:03:27

一秒一次。你要么引出到外部触发。要么子程序自己编程完成。子程序内用边缘指令肯定是不行的。


 
以下网友喜欢您的帖子:

  
游民

经验值: 95
发帖数: 9
精华帖: 0
回复:请问一下各位老师,我这个累计流量的子程序这样存在不存在问题??流量计是立方米每小时


只看楼主 楼主 9楼 2019-12-05 19:26:16
以下是引用芳季在2019-12-05 18:03:27的发言 >8楼

一秒一次。你要么引出到外部触发。要么子程序自己编程完成。子程序内用边缘指令肯定是不行的。

主程序:

子程序:

不晓得这样是否可以呢




 
以下网友喜欢您的帖子:

  
至圣

经验值: 67551
发帖数: 14784
精华帖: 100
回复:请问一下各位老师,我这个累计流量的子程序这样存在不存在问题??流量计是立方米每小时


只看楼主 10楼 2019-12-06 12:54:23
以下是引用无穷小量在2019-12-05 19:26:16的发言 >

主程序:

子程序:

不晓得这样是否可以呢



这下好了。


 
以下网友喜欢您的帖子:

  
游侠

经验值: 312
发帖数: 22
精华帖: 0
回复:请问一下各位老师,我这个累计流量的子程序这样存在不存在问题??流量计是立方米每小时


只看楼主 11楼 2019-12-06 16:48:31

感觉这样和你想要的结果不一样,因为你这样的话不是1秒或者0.1秒加一次,一个加个上升沿,不然结果会是一个扫描周期加一次。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 19840
发帖数: 8834
精华帖: 39
回复:请问一下各位老师,我这个累计流量的子程序这样存在不存在问题??流量计是立方米每小时


只看楼主 12楼 2019-12-20 17:04:22
以下是引用芳季在2019-12-05 18:03:27的发言 >8楼

一秒一次。你要么引出到外部触发。要么子程序自己编程完成。子程序内用边缘指令肯定是不行的。

如果要重复调用的话,是不可以的,如果只调用一次,是没有问题的。

你会吓到别人的。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 19840
发帖数: 8834
精华帖: 39
回复:请问一下各位老师,我这个累计流量的子程序这样存在不存在问题??流量计是立方米每小时


只看楼主 13楼 2019-12-20 17:08:11
以下是引用无穷小量在2019-12-05 11:53:45的发言 >楼主


上面的这块是子程序当中的内容


上面这是我调用子程序,vd684和vd688是累计值


累计值你用OUTPUT类型,单独调试一个的时候是正常的,如果程序中有多个子程序,结果可能就不是你预想的了。

上升沿的别人已经说了,就不说了。

还有一个隐藏的问题:浮点数累积的话,累积到一定程度,你会发现不会再往上累积了。


 
以下网友喜欢您的帖子:

  
至圣

经验值: 43597
发帖数: 15780
精华帖: 61
回复:请问一下各位老师,我这个累计流量的子程序这样存在不存在问题??流量计是立方米每小时


只看楼主 14楼 2019-12-23 09:42:30

浮点数相加,相加的两个数相差不能超过10^7的数量级,否则就会出现13楼shine说的问题。为了解决这个,可以采用进制累加法,即sum1=sum+pv,如果sum1>sum1_sp,则sum2=sum2+sum1,sum1清零;如果sum2>sum2_sp,则sum3=sum3+sum2,sum2清零.。。。。。。。。。。。。。。。最后的累加值sum=∑sum(i).


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

  
侠士

经验值: 1341
发帖数: 216
精华帖: 5
回复:请问一下各位老师,我这个累计流量的子程序这样存在不存在问题??流量计是立方米每小时


只看楼主 15楼 2019-12-30 21:12:15

浮点数大数加小数问题要注意,相差到一定级别小数就被“吃掉了“,如楼上说的。可以考虑将浮点数分成整数和小数部分,以双整数的方式处理。

bbs累积库plus.rar


 
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
请问一下各位老师,我这个累计流量的子程序这样存在不存在问题??流量计是立方米每小时
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。