FUNCTION_BLOCK FB2
VAR_INPUT // Input Parameters
PIW_IN :INT;
HI_LIM_IN :REAL :=100.0;
LO_LIM_IN :REAL :=0.0;
BIPOLAY_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_TEMP // Temporary Variables
RET_VAL_105 :WORD;
LOOP_COUNT :INT;
MAX_DATA :REAL;
MIN_DATA :REAL;
TOTAL :REAL;
TOTAL_FILTERD :REAL;
END_VAR
VAR // Static Variables
DATA_STORE :ARRAY[0..9] OF REAL;
END_VAR
// Statement Section //调用FC105
RET_VAL_105 :=SCALE(IN := PIW_IN // 模拟量输入值: INT
,HI_LIM :=HI_LIM_IN // 工程量上限值: REAL
,LO_LIM :=LO_LIM_IN // 工程量下限值
,BIPOLAR :=BIPOLAR_IN // 双极性参数
,OUT :=SCALED_VAL
);
IF RET_VAL_105 <>0 THEN ERR :=TRUE; //判断返回值
ELSE ERR :=FALSE;
END_IF;
MAX_DATA :=DATA_STORE[0]; //初始化DATA_STORE数组
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
IF MAX_DATA < DATA_STORE[LOOP_COUNT] THEN MAX_DATA :=DATA_STORE[LOOP_COUNT]; //查找最大值
END_IF;
IF MAX_DATA > DATA_STORE[LOOP_COUNT] THEN MIN_DATA :=DATA_STORE[LOOP_COUNT]; //查找最小值
END_IF;
END_FOR;
//计算滤波后累计和
TOTAL_FILTERD :=TOTAL -MIN_DATA -MAX_DATA;
//计算出滤波后的平均值
SCALED_FILTED :=TOTAL_FILTERD /8.0;
END_FUNCTION_BLOCK
编译的时候提示 E:L 00040 C 00021 Non-existent identifier
这个时候错误指向在 ,OUT :=SCALED_VAL这一句
但是我在前面已经声明了 SCALED_VAL :REAL; 并且我在工程中已经加入了FC105。
我初学SCL。还望见谅。