Details
Icon

利用隐式检查POU来确认ARRAY设置边界

134 次 · 0 次 ·
发布日期: 2024-05-10 · 更新日期: 2024-05-15

内容

请参照下列步骤

1. 添加隐式检查POU。

enter image description here

2. 选择边界检查。

enter image description here

3. 添加Library。

① CmpApp.library

② SysExcept.library

③ SysTypes2 Interface

enter image description here

4. 添加变量。

FUNCTION CheckBounds :DINT

VAR*INPUT

index, lower, upper:DINT;

END*VAR

VAR

*pApp :POINTER TO CmpApp.APPLICATION;

_result :SysTypes.RTSIECRESULT;

END*VAR

5. 程序内容:

IF index < lower THEN

CheckBounds := lower;

ELSIF index > upper THEN

CheckBounds := upper;

ELSE

CheckBounds := index;

END_IF

pApp := AppGetCurrent(pResult:=ADR(result));

IF index < lower THEN

CheckBounds := lower;

IF *pApp <> 0 THEN

AppGenerateException(pApp:=pApp, ulException:=RtsExceptions.RTSEXCPTARRAYBOUNDS);

END*IF

ELSIF index > upper THEN

CheckBounds := upper;

IF *pApp <> 0 THEN

AppGenerateException(pApp:=pApp, ulException:=RtsExceptions.RTSEXCPTARRAYBOUNDS);

END*IF

ELSE

CheckBounds := index;

END*IF

6. 测试结果:

① 当Test*Button := True, For循环超出定义的Array范围。 enter image description here

② 会自动跳出例外(也可以将跳出例外,变成一个变量Bool去检查)。 enter image description here

关键词:AX全系列控制器、隐式检查

×