Skip to main content

属性:hide

重要

使用编译指示 {attribute 'hide'} 在大多数情况下,隐藏变量和 POU 并不能达到预期的效果。相反,您应该使用 {属性'条件显示'}。杂注。

pragma 防止用它定义的变量和 POU 显示在 CODESYS 用户界面。因此,您可以有意隐藏这些标识符而不限制访问。这在您开发库时很有用。

. 影响功能:
  • 图书馆管理

  • 调试

  • 输入助手

  • “列出组件”功能

  • 监控

  • 符号配置

用 pragma 定义的变量或 POU 在库管理器中既不可见,也不建议在输入助手或“列出组件”功能中。 pragma 防止那些修饰的变量显示在符号配置中。因此,您无法将这些类型的变量导出为符号。这些变量在在线模式下也是不可见的,因此无法监控它们的值。此外,您不能使用任何调试功能,并且在检查错误时没有任何支持。

如果您,应用程序开发人员,知道隐藏的 POU 和变量的确切实例路径,那么您可以在代码中访问它们。

句法

{attribute 'hide'}

插入位置:对于变量,位于声明变量的行上方。对于 POU,在第一行。

268. 隐藏变量

功能块 FB_MyA 包含属性 pragma {attribute 'hide'} 隐藏局部变量 xInvisibleIn.

FUNCTION_BLOCK FB_MyA
VAR_INPUT
    iInA : INT;
    {attribute 'hide'}
    xInvisibleIn : BOOL;
    xInit: BOOL;
END_VAR
VAR_OUTPUT
    iOutA : INT;
END_VAR
VAR
    iCounter : INT;
END_VAR

功能块的两个实例 FB_MyA 在主程序中定义。

PROGRAM PLC_PRG
VAR
    fbMyA1, fbMyA2 : FB_MyA;
    xVar2 : BOOL;
    iVar1 : INT;
    iVar2 : INT;
END_VAR
fbMyA1(iInA := 1, xInit := TRUE, xInvisibleIn := TRUE, iOutA => iVar1);
fbMyA2(iInA := 1, xInit := TRUE, iOutA => iVar2);

而输入值 fbMyA1 现在实现了“列表组件”功能,在键入时打开 fbMyA1. (在执行部分 PLC_PRG),显示变量 iInA, xInit, 和 iOutA,但不是隐藏变量 xInvisibleIn.



269. 隐藏库 POU

FB_A 是库的功能块 HiddenFunctionality 使用默认命名空间 HIDDEN.要对应用程序开发人员隐藏标识符和 POU 代码,请使用属性 pragma 开始声明 POU {attribute 'hide'}.要以相同的方式隐藏从属 POU(动作、方法、属性和转换),也要以它们的声明开头 {attribute 'hide'}.

{attribute 'hide'}
FUNCTION_BLOCK FB_A
VAR_INPUT
END_VAR
VAR_OUTPUT
END_VAR
VAR
    iA : INT;
    iCount : INT;
    iInvisible : INT;
END_VAR

{attribute 'hide'}
METHOD METH_Count : INT
VAR_INPUT
END_VAR
iCount := iCount + 1;

{attribute 'hide'}
METHOD METH_Invisible : BOOL
VAR_INPUT
END_VAR
iInvisible := iInvisible + 1;

{attribute 'hide'}
PROPERTY PUBLIC prop_iA : INT

对于作为应用程序开发人员的您来说,所有 POU 都是不可见的。仅当您知道实例路径时才能使用它们。

PROGRAM PLC_PRG
VAR
        fbHidden : HIDDEN.FB_A; // Hidden function block from library HiddenFunctionality
        iCounter : INT;
END_VAR
fbHidden.METH_Invisible();
iCounter := fbHidden.iInvisible;

在联机模式下,不执行任何监控。

_cds_img_hidden_pous.png


提示

随着 {属性'hide_all_locals'} pragma,您可以隐藏 POU 的所有局部变量。