对峙进修第四天:利用博途软件编写流量累积功_怪人怪事

对峙进修第四天:利用博途软件编写流量累积功

怪人怪事 2023-05-04 19:38www.bnfh.cn怪人怪事

坚持学习第四天使用博途软件编写流量累积功能块

使用博途软件编写流量累积功能块

使用西门子博途软件编写一个根据瞬时流量计算累计流量的功能块;大部分的流量计都自己带流量累积,不需要计算,有极少一部分流量计不带流量累积功能,那就需要用PLC或者上位机来设计一个根据瞬时流量来计算累计流量的功能块。

  1. 累计流量的意义

目前市面上大部分PLC都带有流量累积功能块,一般命名为“Totalizer”,有大部分都需要官网下载或者一些特定的渠道下载,有时候着急用的时候还找不到,流量累积在一些特定的流程工业控制领域是很重要的一个参数,对数据分析有很重要的意义;实际上根据瞬时流量来计算累计流量就是把PLC每个扫描周期采集到的数据进行简单的累加,复杂的还有一些特定的参数设定,对于PLC做的流量累积实际上还是有些一些误差的,因为没有补偿;现在我们用博途的SCL语言来编写一个简单的流量累积公式。

  1. 博途软件实现累计流量计算的方法

2.1 FB函数块建立

我们需要打开博途软件,本文用的是博途V15版本,在程序块处点击添加一个FB程序块,编程语言使用SCL,命名“流量累积”,如图1所示。

图1 建立流量累积FB块

2.1 建立临时变量

打开建立好的功能块,在上方添加临时变量,具体的临时变量设置组态与名称如图2所示。

图2 临时变量组态

2.2 程序编写

在变量组态的下方空白处进行流量累积计算程序编写,具体的编写程序如图3所示。

图3 流量累积程序编写

在一个循环中,输入变量 "时间单位" 和"扫描时间" 数据类型 Time 被转化为 Real 类型;转化后的值被转移到临时变量 “时间单位_Real” 和 “扫描时间_Real”;变量 "瞬时流量" 的输入值乘以临时变量 "扫描时间_Real" 的值,然后除以临时变量 “时间单位_Real”;再加上上一次计算的值;结果存储在静态变量 “中间值” 的缓冲区。

这样每次循环之后,中间结果值存储在“中间值” 的缓冲区中递增,然后转移到输出变量“累积流量” 中。如果变量 “复位” 有“True” 的值,则变量 “累积流量” 输出值被复位为零。

  1. 程序仿真测试

"流量累积" 功能块必须在循环中断(比如OB30)中调用,不然计算中误差会很大,新建一个循环中断,命名为“累积流量计算”,将“流量累积”功能块调用,填写各个参数;在此程序中,瞬时流量的值为100,输出变量“累积流量”的值在1分钟内从0累积到100,扫描时间单位是100毫秒,和CPU扫描时间对应,当FB在循环中断中被调用时,程序每隔 100ms 处理一次而且程序是独立于 OB1 (主程序)的。被测量值 "瞬时流量" (速度或流量)的计量单位可以是米每秒,立方米每分钟或公里每小时。这时变量 "时间单位" 必须输入对应的间隔时间,例如米每秒 T#1s、立方米每分钟 T#1M、公里每小时T#1h。程序如图4所示。

图4 流量累积功能块调用

使用博途自带的仿真程序进行仿真测试,仿真运行测试正常,程序仿真如图5所示。

图5 程序仿真测试

抽空再做一个上位机组态的测试。

不足之处还望海涵,请各界大佬多多批评指教!

程序仅供参考!

Copyright © 2016-2025 www.bnfh.cn 怪异网 版权所有 Power by