回复:模拟量传感器检测数值突变方法

落叶无根

  • 帖子

    14
  • 精华

    0
  • 被关注

    2

论坛等级:游侠

注册时间:2008-09-09

普通 普通 如何晋级?

发布于 2009-02-23 08:44:12

0楼

谢谢xw007的提示,把程序改动一下,不知道如何,各位再看看,谢谢!
FUNCTION_BLOCK FB800
CONST
N := 10;//总数值N的选取
END_CONST
VAR_INPUT//定义输入参数
PIW_IN: INT;//模拟量输入值
Set_Deviation: REAL;//最大设定偏差值,必须大于零。
HI_LIM_IN: REAL;//工程量上限值
LO_LIM_IN: REAL;//工程量下限值
BIPOLAR_IN: BOOL;//信号状态为1表示输入值为双极性,信号状态0表示输入值为单极性。
END_VAR
VAR_OUTPUT //定义输出参数
SCALED_VAL: REAL;//转换的结果
SCALED_FILTED: REAL;//滤波后平均值
ERR: BOOL;
END_VAR
VAR_TEMP//定义临时参数
RET_VAL_105: WORD;//FC105的RET_VAL
Actual_Deviation: REAL;//实际偏差值
LOOP_COUNT: INT;
MAX_DATA: REAL;
MIN_DATA: REAL;
TOTAL: REAL;
TOTAL_FILTERD: REAL;
END_VAR
VAR
DATA_STORE: ARRAY[0..N-1] OF REAL;//定义静态参数
END_VAR
BEGIN

RET_VAL_105 := FC105(IN := PIW_IN //调用FC105。
,HI_LIM := HI_LIM_IN //以工程单位表示的上限值(实数)。
,LO_LIM := LO_LIM_IN //以工程单位表示的下限值(实数)。
,BIPOLAR := BIPOLAR_IN //信号状态为1表示输入值为双极性,信号状态0表示输入值为单极性。
,OUT := SCALED_VAL //转换的结果(实数)。
);//如果该指令的执行没有错误,将返回值W#16#0000。
IF RET_VAL_105 <> 0 THEN ERR := TRUE;
ELSE ERR := FALSE;
END_IF;
MAX_DATA := DATA_STORE[0];//初始化
MIN_DATA := DATA_STORE[0];
TOTAL := 0.0;
TOTAL_FILTERD := 0.0;

FOR LOOP_COUNT:= 0 TO N-2 BY 1 DO//FIFO 堆栈。
DATA_STORE[LOOP_COUNT] := DATA_STORE[LOOP_COUNT + 1];
END_FOR;
IF DATA_STORE[N-2] <> 0.0 THEN
Actual_Deviation := DATA_STORE[N-1] - DATA_STORE[N-2];//计算实际偏差值
Actual_Deviation := ABS (Actual_Deviation);//对实际偏差值取绝对值
IF Actual_Deviation > Set_Deviation THEN DATA_STORE[N-1] := DATA_STORE[N-2];
END_IF;
END_IF;
DATA_STORE[N-1] := SCALED_VAL;//加入新检测值

FOR LOOP_COUNT:= 0 TO N-1 BY 1 DO
IF MAX_DATA < DATA_STORE[LOOP_COUNT] THEN MAX_DATA := DATA_STORE[LOOP_COUNT];//查找最大值
END_IF;
IF MIN_DATA > DATA_STORE[LOOP_COUNT] THEN MIN_DATA := DATA_STORE[LOOP_COUNT];//查找最小值
END_IF;
TOTAL := TOTAL + DATA_STORE[LOOP_COUNT];//计算累加和
END_FOR;
TOTAL_FILTERD := TOTAL -MAX_DATA -MIN_DATA;//计算滤波后累加和
SCALED_FILTED := TOTAL_FILTERD/INT_TO_REAL(N-2);//计算滤波后平均值
END_FUNCTION_BLOCK
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54620条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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