当前位置: 主页 > PLC控制

博图V13 SCL编程问题

FUNCTioN_BLOCKfb2
CONST
Length:=5;//数据记录宽度(为奇数)
END_CONST
VAR_INPUT//定义输入参数
Realtime_Value:REAL;//实时采样值
END_VAR
VAR_OUTPUT//定义输出参数
Filted_Value:REAL;//滤波后采样值
END_VAR
VAR_TEMP//定义临时变量
Loop_Count:INT;//循环计数
SquenCE_Count:INT;//排序计数
Temp_Data:REAL;//临时数据
data_tmp:ARRAY[1..length]OFREAL;
END_VAR
VAR//定义静态变量
Data_Store:ARRAY[1..Length]OFREAL;
END_VAR
BEGIN
(*先入先出堆栈*)
FORLoop_Count:=1TO(Length–1)BY1DO
Data_Store[Loop_Count]:=Data_Store[Loop_Count+1];
END_FOR;
Data_Store[Length]:=Realtime_Value;
(*将堆栈里数据暂存到临时数组中*)
FORLoop_Count:=1TOLengthBY1DO
Data_tmp[Loop_Count]:=Data_Store[Loop_Count];
END_FOR;
(*排序*)
FORLoop_Count:=LengthTO2BY-1DO
FORSquence_Count:=1TO(Loop_Count–1)BY1DO
IFdata_tmp[Squence_Count]>data_tmp[Squence_Count+1]THEN
Temp_Data:=data_tmp[Squence_Count];
data_tmp[Squence_Count]:=data_tmp[Squence_Count+1];
data_tmp[Squence_Count+1]:=Temp_Data;
END_IF;
END_FOR;
END_FOR;
(*取中间值*)
Filted_Value:=data_tmp[(Length+1)/2];
END_FUNCTION_BLOCK
以上程序在博图V13上为何各种错误?正确程序应该是怎样的

问题补充:
如图所示,有在声明表定义的,但还是各种错误啊

图片说明:

博图V13 SCL编程问题博图V13 SCL编程问题

最佳答案

在博图V13中,上面的声明不需要在写了,博图中给出了声明表,直接在表中设置就可以了。
补充:不需要BEGIN了。
你图片中INPUT定义的是Realtime,而使用的确是Realtime_Value,所以报错变量未定义。估计data_tmp也是使用的名称和定义的不一致。仔细检查你的程序变量名称。

图片说明:

博图V13 SCL编程问题博图V13 SCL编程问题

提问者对于答案的评价:
OK

  • 关注微信

猜你喜欢

微信公众号