回复:流量累积功能块

面条

  • 帖子

    59
  • 精华

    2
  • 被关注

    9

论坛等级:游侠

注册时间:2008-05-13

普通 普通 如何晋级?

发布于 2008-05-13 21:29:20

0楼

FUNCTION "FLUXbase" : VOID

TITLE = 'FLUXbase'
//流量累积计算
//
//算法原理:
// 当前积分量 = 积分量 + 以前的计算误差
// 当前累积量 = 当前积分量 + 原累积量
// 当前计算误差 = 原累积量 - 当前累积量 + 当前积分量
//
//版本: 1.0
//作者: QLHCCO
//创建: 2008.05.09 V1.0
//更新: ------
//

VERSION: '1.0'
AUTHOR: qlhcco
NAME: FLUXbase
FAMILY: FLUX

VAR_INPUT
PV : REAL ; //瞬时流量
CYC : REAL ; //采样时间(MS)
PLL : REAL ; //允许的最小瞬时流量
END_VAR
VAR_IN_OUT
OV : REAL ; //流量累积输出
OV_ER1 : REAL ; //累计偏差1
OV_ER2 : REAL ; //累计偏差2
OV_ER3 : REAL ; //累计偏差3
PV_ALT : REAL ; //上周期瞬时流量
END_VAR
VAR_TEMP
tmpReal1 : REAL ;
tmpReal2 : REAL ;
OValt : REAL ;
RS : BOOL ;
END_VAR
BEGIN
IF OV >= 1.000000e+016 THEN //
OValt := 0.0 ;
RS := true ;
ELSE
OValt := OV ;
RS := False ;
END_IF;

tmpReal1 := ( PV + PV_ALT ) / 2.0 ;
tmpReal2 := PV * (CYC / 3.6E+6 ) ;
IF tmpReal1 >= PLL THEN //小信号切除
tmpReal1 := tmpReal2 + OV_ER1 ; //计算当前积分量
tmpReal2 := tmpReal1 + OV_ER2 ;
OV_ER1 := OV_ER2 - tmpReal2 + tmpReal1 ; //第1误差动态误差计算
tmpReal1 := tmpReal2 + OV_ER3 ;
OV_ER2 := OV_ER3 - tmpReal1 + tmpReal2 ; //第2误差动态误差计算
tmpReal2 := tmpReal1 + OValt ;
//下面的这个主要是在累积量清零后
//防止误差引起的显示负值的显示效果
IF RS THEN
IF tmpReal2 >= 0.0 THEN
OV := 0.000000e+000;
OV_ER3 := OValt - tmpReal2 + tmpReal1 ;
ELSE
OV := OV ;
OV_ER3 := tmpReal2 ;
END_IF ;
ELSE
OV := tmpReal2 ;
OV_ER3 := OValt - tmpReal2 + tmpReal1 ;
END_IF;
ELSE
OV := OValt ;
END_IF ;
PV_ALT := PV ;
END_FUNCTION
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54618条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。