本人目前在做一个水厂的项目,需要对出水流量做流量累积,精度要求要高。求助哪位高人能提供流量累积的程序或代码,小弟将不胜感激!
问题补充:
我邮箱为liaoyibo1986@163.com,希望哪位好心人能发给我一个项目
最佳答案
流量累积的程序你在找答案中可以找到很多。
精度要求高的话,取决于你的流量计和采样间隔。
到这里下载例子吧
http://support.automation.siemens.com/CN/llisapi.dll/csfetch/23061633/Totalize.exe?func=cslib.csFetch&nodeid=23059123
程序为西门子提供的Totalize.exe
操作指导:
“Totalizer”功能块程序中设置有一个间隔,该功能块使用指定的间隔将测量值累加为一个总值;例如,使用测量线性速度的计量单位或者测量体积的计量单位。您可以用距离或体积作为物理量,用毫秒、秒、分钟、小时、或天作为测量时间的单位。
图 01
“Totalizer”功能块中包含下列输入和输出变量以及临时和静态变量。
参数 变量 数据类型 说明
输入 VALUE REAL 在一个时间间隔内的测量值
输入 INTERVAL TIME 测量的时间间隔
输入 CYCLE TIME 扫描时间
输入 COM_RST BOOL 复位“TOTAL”输出。
输出 TOTAL REAL 累计的总输出值
静态 ACCUM REAL 用于存储“TOTAL”输出的临时累积结果
临时 tINTERVAL REAL REAL 格式的临时时间间隔
临时 tCYCLE REAL REAL 格式的临时扫描时间
表 01
测量值“VALUE”相关的物理单位可以为,例如,米/秒、立方米/分钟或者公里/小时。必须在输入变量“INTERVAL”中输入物理单位的间隔时间。例如:
物理单位 “INTERVAL”的输入值
米/秒 T#1s
立方米/分钟 T#1M
公里/小时 T#1h
表 02
程序描述:
如果变量“COM_RST”的信号状态是 True,则变量“ACCUM”和“TOTAL”被复位为零,不进行任何计算。如果信号状态为 False,则首先将两个输入变量“INTERVAL”和“CYCLE”的数据类型转换为 REAL,然后这两个变量的值被传送到临时变量“tINTERVAL”和“tCYCLE”中。在一个周期中,将变量“VALUE”的输入值乘以临时变量“tCYCLE”的值,然后再除以临时变量“tINTERVAL”的值。将结果保存在缓冲区“ACCUM”中。这样,在一个特定的周期内,将缓冲区“ACCUM”中的中间结果累加上该数值,同时在同一周期内将累加结果传送到变量“TOTAL”中。
循环时间反映了处理功能块“Totalizer”的扫描时间。在循环中断 OB35 中调用该 FB 时,同时以 100 ms 的时间间隔处理程序,该间隔与循环程序的处理时间无关。
举例:
对于一个流量计,测量到它的终值为 60.0 米/分钟,其假定值保存在标记双字 MD10 中。
图 02
由于物理量级是“meters per minute”,所以输入参数“INTERVAL”被设置为“T#1M”。在 OB35 中调用“Totalizer”功能块,OB35 的缺省时基是 100 毫秒。输入变量“CYCLE”被设置为“T#100MS”。
图 03
附件“Totalize.exe”中包含一个 STEP 7 项目,该项目使用了上述功能块(FB100、背景数据块 DB100 和 OB35)。源文件夹中包含两套 FB100 功能块源代码:
• 源代码“Totalizer_d”:注释为德文。
• 源代码“Totalizer_e”:注释为英文
Totalize.exe ( 299 KB )
将“Totalize.exe”文件复制到一个独立的文件夹中,然后双击启动文件。STEP 7 V5.3 项目连同所有的子文件夹便被自动解压缩。可以使用SIMATIC 管理器打开并处理解压缩出来的项目。
提问者对于答案的评价:
谢谢了,但我下载后打不开
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc312804.html