回复:平均值怎么编程?

依然

西门子1847工业学习平台

  • 帖子

    2530
  • 精华

    24
  • 被关注

    110

论坛等级:至圣

注册时间:2004-04-13

普通 普通 如何晋级?

发布于 2009-07-01 09:07:47

0楼

FUNCTION_BLOCK FB1

VAR_TEMP
// Temporary Variables
RET_VAL_105: WORD;
LOOP_COUNT: INT;
MAX_DATA: REAL;
MIN_DATA: REAL;
TOTAL: REAL;
TOTAL_FILTERD: REAL;
END_VAR
// Block Parameters
VAR_INPUT
// Input Parameters
PIW_IN: INT;
HI_LIM_IN: REAL :=100.0;
LO_LIM_IN: REAL :=0.0;
BIPOLAR_IN: BOOL :=FALSE;
END_VAR

VAR_IN_OUT
// I/O Parameters
END_VAR

VAR_OUTPUT
// Output Parameters
SCALED_VAL: REAL;
SCALED_FILTED: REAL;
ERR: BOOL;
END_VAR

VAR
// Static Variables
DATA_STORE: ARRAY[0..9] OF REAL;
END_VAR

// Statement Section
RET_VAL_105:=SCALE(IN := PIW_IN // IN: INT
,HI_LIM := HI_LIM_IN // IN: REAL
,LO_LIM := LO_LIM_IN // IN: REAL
,BIPOLAR := BIPOLAR_IN // IN: BOOL
,OUT := SCALED_VAL // OUT: REAL
); // WORD
IF RET_VAL_105<>0 THEN ERR:=TRUE;
ELSE ERR:=FALSE;
END_IF;

//INITILAIZE
MAX_DATA:=DATA_STORE[0];
MIN_DATA:=DATA_STORE[0];
TOTAL:=0.0;
TOTAL_FILTERD:=0.0;

FOR LOOP_COUNT:= 0 TO 8 BY 1 DO
DATA_STORE[LOOP_COUNT]:=DATA_STORE[LOOP_COUNT+1];
END_FOR;
DATA_STORE[9]:=SCALED_VAL;


FOR LOOP_COUNT:=0 TO 9 BY 1 DO
//FIND THE MAX VALUE;
IF MAX_DATA < DATA_STORE[LOOP_COUNT] THEN MAX_DATA:=DATA_STORE[LOOP_COUNT];
END_IF;
//FIND THE MIN VALUE;
IF MIN_DATA > DATA_STORE[LOOP_COUNT] THEN MIN_DATA:=DATA_STORE[LOOP_COUNT];
END_IF;

//CALCULATE THE TOTAL VALUE;
TOTAL:=TOTAL+DATA_STORE[LOOP_COUNT];
END_FOR;
//CALCULATE
TOTAL_FILTERD:=TOTAL-MIN_DATA-MAX_DATA;
SCALED_FILTED:=TOTAL_FILTERD/8.0;


END_FUNCTION_BLOCK
JUST DO IT
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54789条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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