龙空技术网

博图PLC流量累积程序

WangYingjie 2354

前言:

当前小伙伴们对“流量专用累积量”可能比较关注,看官们都需要知道一些“流量专用累积量”的相关资讯。那么小编也在网络上搜集了一些对于“流量专用累积量””的相关文章,希望咱们能喜欢,大家快快来学习一下吧!

函数块 'Totalizer' ,可以计算出一个瞬时流量的累积值。

描述

例如,在测量流量或线速度时,可以使用距离或体积作为物理量,使用毫秒,秒,分钟,小时或者天作为测量时间的单位。

"Totalizer" 功能块必须在循环中断(比如OB30)中调用,表 01 是 "Totalizer" 功能块的输入和输出变量列表

参数

变量

数据类型

描述

输入

Value

Real

瞬时流量

输入

Interval

Time

瞬时流量的时间单位

输入

Cycle

Time

扫描时间(循环中断周期)

输入

Reset

Bool

累积值清零

输出

Total

Real

累积值输出

表 01

在一个循环中

① 输入变量 "Interval" 和"Cycle" 数据类型 Time 被转化为 Real 类型,

② 转化后的值被转移到临时变量 “Interval_real” 和 “Cycle_real”。

③ 变量 "VALUE" 的输入值乘以临时变量 "Cycle_real" 的值,然后除以临时变量 “Interval_real”,

④ 结果存储在静态变量 “Accum” 的缓冲区。

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

例子: 在图 01 的例子中,“Value”变量值是 60.0 ,同时变量 “Interval” 的时间值是一分钟,输出变量 "Total" 在1 分钟内从1累加到了60,周期时间 100ms 反映了FB"Totalizer"的执行过程中的扫描时间。

当FB在循环中断中被调用时,程序每隔 100ms 处理一次而且程序是独立于 OB1 (主程序)的,被测量值 "Value" (速度或流量)的计量单位可以是米每秒,立方米每分钟或公里每小时,这时变量 "Interval" 必须输入对应的间隔时间,例如,

米每秒:T#1S

立方米每分钟:T#1M

公里每小时:T#1H

图 01

Totalizer 功能块必须在循环中断中调用,程序如下

FB"Totalizer":

VAR_INPUT

Value : Real; //瞬时流量

Intervall : Time; //瞬时流量的时间单位

Cycle : Time; //扫描时间→循环中断周期

Reset : Bool; //复位→累计清零

END_VAR

VAR_OUTPUT

Total : Real; //累计值输出

END_VAR

VAR

Accum : Real;

END_VAR

VAR_TEMP

intervall_real : Real;

cycle_real : Real;

intervall_dint : DInt;

cycle_dint : DInt;

END_VAR

IF #Reset = true THEN

#Accum := 0.000000e000;

#Total := 0.000000e000; //The variables will be set to zero.

ELSE

#intervall_dint := TIME_TO_DINT(#Intervall);

#intervall_real := DINT_TO_REAL(#intervall_dint);

#cycle_dint := TIME_TO_DINT(#Cycle);

#cycle_real := DINT_TO_REAL(#cycle_dint);

#Accum := ((#Value * #cycle_real) / #intervall_real) + #Accum;

#Total := #Accum; // Copy result to #Total.

END_IF;

标签: #流量专用累积量