展开查看
我根据帮助手册上的将以下代码输入进去,可是编译的时候提示出现了三个错误,
错误提示1, LIMIT := 7;identifier already exits
错误提示2, sortbuffer : ARRAY [0..LIMIT] OF INT//INVAILID CONSTANT
错误提示3,calcbuffer : ARRAY [0..LIMIT] OF //INVAILID CONSTANT
我在想是不是因为LIMIT是关键字,因为当我把LIMIT改成LIMITE之后,就不再提示错误了。程序如下:
CONST
LIMIT := 7;//为什么一直提示这个是已经定义过的呢,是因为LIMIT是关键字吗?可是我是按照说明手册上的敲的代码呀?
END_CONST
VAR_IN_OUT
sortbuffer : ARRAY [0..LIMIT] OF INT;//这个为什么一直提示非法的常数呢?
END_VAR
VAR_OUTPUT
calcbuffer : ARRAY [0..LIMIT] OF //这个为什么一直提示非法的常数呢?
STRUCT
squareroot:INT;
square :INT;
END_STRUCT;
END_VAR
VAR_TEMP
swap : BOOL;
index,aux : INT;
valr,resultr: REAL;
END_VAR
BEGIN
(******************************************************************************************************************
part1 sorting:According to the "bubble sort" method:Swap pairs of values until the measured value buffer is sorted.
*********************************************************************************************************************)
REPEAT
swap:=FALSE;
FOR index:=LIMIT TO 1 BY -1 DO
IF sortbuffer[index-1]>sortbuffer[index]
THEN aux:=sortbuffer[index];
sortbuffer[index] :=sortbuffer[index-1];
sortbuffer[index-1]:=aux;
swap :=true;
END_IF;
END_FOR;
UNTIL NOT swap
END_REPEAT;
(******************************************************************************************
Part2 calculation:square root with standard function SQRT and squating with SQUARE function
******************************************************************************************)
FOR index:= 0 TO LIMIT BY 1 DO
valr :=INT_TO_REAL(sortbuffer[index]);
resultr:=SQRT(valr);
calcbuffer[index].squareroot:=REAL_TO_INT(resultr);
calcbuffer[index].square:=SQUARE(sortbuffer[index]);
END_FOR;
END_FUNCTION_BLOCK
提问者:霜影子
scl中不允许动态定义数组,数组只能直接使用常数定义。
limit是关键字。为了测试你可以随便在后面加上几个字符。
不要迷信书,书也有错误的时候,一切以实际为准。
我在帮助手册上,看到了这样子的一段程序。
CONST
LIMIT:=7;
END_CONST
还有,我在西门子编程S7-300/400PLC编程-语句表和结构化控制语言描述(第三版)书中也看到了,这样子的定义方法:
VAR_INPUT
MAX:INT;
IN:INT;
MIN:INT;
END_VAR
但是当我将这两段定义的程序输入SCL编程环境中,一直提示Identifier already exists.
编程环境下字体也是显示蓝色的,但是我在保留字符中没看到LIMIT,MAX,MIN这三个是关键字啊,类似的关键字在帮助手册中,我也没找到。
请问这是怎么回事呢?