关于SCL编程的小问题

我根据帮助手册上的将以下代码输入进去,可是编译的时候提示出现了三个错误,
错误提示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编程的小问题   

最佳答案

scl中不允许动态定义数组,数组只能直接使用常数定义。
limit是关键字。为了测试你可以随便在后面加上几个字符。


不要迷信书,书也有错误的时候,一切以实际为准。

提问者对于答案的评价:
我在操作手册和参考书上两处地方都找到了类似的LIMIT,MAX,MIN定义声明,我不清楚是不是错误,如果并不是错误的话,我得再找找原因了。还是谢谢你的回答了。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc155387.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年6月6日
下一篇 2017年6月6日

相关推荐