已解决 收藏
流量计累计计算
PLC 采样电磁流量计瞬时值,然后在OB35中做累加,计算累计值。现在想计算出每天的进水量,有点没有头绪了,高手们能否给小弟个思路??
谢谢……
悬赏分:5 | 解决时间:2010-04-25 17:34:16 | 提问者:lvking2008 - 学长 第2级问题ID :47127
最佳答案
在中断中做,中断周期越小累计越准确。比如ob35的周期是100ms
L PV//按小时流量
L 36000.0//周期流量
/r
l sum//累计值
+r
t sum
为了防止出现大数加小数,最后不累计,采用进制方式来累计。也就是如果sum 大于一定值保存下来sum 清零即:
l sum
l 100000.0
>=r
jcn m1
l sum_save
l sum
+r
t sum_save
l 0.0
t sum
m1:nop 0
回答者: zhangli0 - 顶级工程师 第12级 2010-01-15 09:41:08 我要评论
提问者对于答案的评价:
的
你觉得最佳答案好不好? 很好 不好
50% (0)50% (0)
最佳答案网友评论
为了防止出现大数加小数,最后不累计,采用进制方式来累计。也就是如果sum 大于一定值保存下来 。不知您这个大数加小数是什么意思啊?因为我现在就碰到累加值停止累加的情况,但还没到溢出的值。烦请您给个指导。
评论者:king_wang - 资深学长 第3级
其他答案
可以考虑定时中断啊, 每天算一下累积差值就是每天的进水量
回答者: cloud21 - 顶级工程师 第12级 2010-01-15 08:53:41
没做过。
不过是否可以考虑10分钟或者半小时对流量瞬时值进行求和,算平均值。 这样一天的进水量就等于平均值乘以你的频率了。
具体是10分钟还是30分钟,你可以做成变量形式,这样就可以接受外界输入,即可以设定采样频率了。
试试吧
Good luck
回答者: raining010 - 毕业实践员 第4级 2010-01-15 09:21:52 http://www.ad.siemens.com.cn/service/answer/solution.asp?Q_id=6360&cid=1029
回答者: daliu - 初级工程师 第9级 2010-01-15 13:44:34
我提出个小方案
1. 做一个S_CU(计数为1),输入S (M0.2人工采样控制点),把输出M0.3反引回R
2.做S_ODT做一个2H 的时间计数,M0.2做输入(即每隔两小时Q 有一个脉冲输出m0.0,同时反引回R 端)
3.S_CU做累加输入M0.0,加到12做输出M0.1。(输出反引回R )
4.做一个或块,输入M0.3与M0.1, 输出是M0.4
5.用MD100减去MD1000. 即为所得累积量。
6.做一个MOVE 块,M0.4接EN ,你OB35中做的累积输出(假如是MD100) 为输入,MD1000做输出.
注意5条与6条程序的顺序不能互换。一定让COU 先扫第5条。在扫第6条
回答者: an03152002 - 学长 第2级 2010-01-15 14:35:35
用积分器来累加
忘了FB 多少了,查integra***找这个块
Ti 设置成1就ok 了,在OB35里边调用就可以
不过它的reset 管脚不太好使,一般我把TI 设置成0来做清零
回答者: 树皮 - 高级技术员 第7级 2010-01-16 12:05:28
用积分块去做,不过精确度不高,西门子也没有办法;
跟实际的电磁流量计的数据是有差异的,建议如果表计上有累计流量的,你只能把PLC 的累计值作为参考,毕竟经过多次转换后精度只能达到这一步!
回答者: Condy - 中级技术员 第6级 2010-01-16 13:48:23
可以用西门子提供的标准流量累积例子程序,非常灵活和方便,连接如下: http://support.automation.siemens.com/CN/view/zh/23061633
回答者: 掠影匆匆 - 初级技术员 第5级 2010-01-20 10:42:49
已解决 收藏
流量计累计计算
PLC 采样电磁流量计瞬时值,然后在OB35中做累加,计算累计值。现在想计算出每天的进水量,有点没有头绪了,高手们能否给小弟个思路??
谢谢……
悬赏分:5 | 解决时间:2010-04-25 17:34:16 | 提问者:lvking2008 - 学长 第2级问题ID :47127
最佳答案
在中断中做,中断周期越小累计越准确。比如ob35的周期是100ms
L PV//按小时流量
L 36000.0//周期流量
/r
l sum//累计值
+r
t sum
为了防止出现大数加小数,最后不累计,采用进制方式来累计。也就是如果sum 大于一定值保存下来sum 清零即:
l sum
l 100000.0
>=r
jcn m1
l sum_save
l sum
+r
t sum_save
l 0.0
t sum
m1:nop 0
回答者: zhangli0 - 顶级工程师 第12级 2010-01-15 09:41:08 我要评论
提问者对于答案的评价:
的
你觉得最佳答案好不好? 很好 不好
50% (0)50% (0)
最佳答案网友评论
为了防止出现大数加小数,最后不累计,采用进制方式来累计。也就是如果sum 大于一定值保存下来 。不知您这个大数加小数是什么意思啊?因为我现在就碰到累加值停止累加的情况,但还没到溢出的值。烦请您给个指导。
评论者:king_wang - 资深学长 第3级
其他答案
可以考虑定时中断啊, 每天算一下累积差值就是每天的进水量
回答者: cloud21 - 顶级工程师 第12级 2010-01-15 08:53:41
没做过。
不过是否可以考虑10分钟或者半小时对流量瞬时值进行求和,算平均值。 这样一天的进水量就等于平均值乘以你的频率了。
具体是10分钟还是30分钟,你可以做成变量形式,这样就可以接受外界输入,即可以设定采样频率了。
试试吧
Good luck
回答者: raining010 - 毕业实践员 第4级 2010-01-15 09:21:52 http://www.ad.siemens.com.cn/service/answer/solution.asp?Q_id=6360&cid=1029
回答者: daliu - 初级工程师 第9级 2010-01-15 13:44:34
我提出个小方案
1. 做一个S_CU(计数为1),输入S (M0.2人工采样控制点),把输出M0.3反引回R
2.做S_ODT做一个2H 的时间计数,M0.2做输入(即每隔两小时Q 有一个脉冲输出m0.0,同时反引回R 端)
3.S_CU做累加输入M0.0,加到12做输出M0.1。(输出反引回R )
4.做一个或块,输入M0.3与M0.1, 输出是M0.4
5.用MD100减去MD1000. 即为所得累积量。
6.做一个MOVE 块,M0.4接EN ,你OB35中做的累积输出(假如是MD100) 为输入,MD1000做输出.
注意5条与6条程序的顺序不能互换。一定让COU 先扫第5条。在扫第6条
回答者: an03152002 - 学长 第2级 2010-01-15 14:35:35
用积分器来累加
忘了FB 多少了,查integra***找这个块
Ti 设置成1就ok 了,在OB35里边调用就可以
不过它的reset 管脚不太好使,一般我把TI 设置成0来做清零
回答者: 树皮 - 高级技术员 第7级 2010-01-16 12:05:28
用积分块去做,不过精确度不高,西门子也没有办法;
跟实际的电磁流量计的数据是有差异的,建议如果表计上有累计流量的,你只能把PLC 的累计值作为参考,毕竟经过多次转换后精度只能达到这一步!
回答者: Condy - 中级技术员 第6级 2010-01-16 13:48:23
可以用西门子提供的标准流量累积例子程序,非常灵活和方便,连接如下: http://support.automation.siemens.com/CN/view/zh/23061633
回答者: 掠影匆匆 - 初级技术员 第5级 2010-01-20 10:42:49